diff --git a/minui/graphics.c b/minui/graphics.c
index 88572a8..287878e 100644
--- a/minui/graphics.c
+++ b/minui/graphics.c
@@ -245,6 +245,9 @@
 }
 
 void gr_texticon(int x, int y, gr_surface icon) {
+    if (gr_context == NULL || icon == NULL) {
+        return;
+    }
     GGLContext* gl = gr_context;
 
     gl->bindTexture(gl, (GGLSurface*) icon);
@@ -268,7 +271,7 @@
 }
 
 void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy) {
-    if (gr_context == NULL) {
+    if (gr_context == NULL || source == NULL) {
         return;
     }
     GGLContext *gl = gr_context;
diff --git a/minui/resources.c b/minui/resources.c
index ac7bdac..065f431 100644
--- a/minui/resources.c
+++ b/minui/resources.c
@@ -178,8 +178,6 @@
 static int matches_locale(const char* loc) {
     if (locale == NULL) return 0;
 
-    printf("matching loc=[%s] vs locale=[%s]\n", loc, locale);
-
     if (strcmp(loc, locale) == 0) return 1;
 
     // if loc does *not* have an underscore, and it matches the start
@@ -190,7 +188,6 @@
     int i;
     for (i = 0; loc[i] != 0 && loc[i] != '_'; ++i);
     if (loc[i] == '_') return 0;
-    printf("  partial match possible; i = %d\n", i);
 
     return (strncmp(locale, loc, i) == 0 && locale[i] == '_');
 }
@@ -268,9 +265,9 @@
         int len = row[4];
         char* loc = row+5;
 
-        printf("row %d: %s %d x %d\n", y, loc, w, h);
-
         if (y+1+h >= height || matches_locale(loc)) {
+            printf("  %20s: %s (%d x %d @ %d)\n", name, loc, w, h, y);
+
             surface = malloc(sizeof(GGLSurface));
             if (surface == NULL) {
                 result = -8;
