diff --git a/minuitwrp/graphics.c b/minuitwrp/graphics.c
index 0cdd772..9926904 100644
--- a/minuitwrp/graphics.c
+++ b/minuitwrp/graphics.c
@@ -77,13 +77,6 @@
 static int gr_fb_fd = -1;
 static int gr_vt_fd = -1;
 
-static unsigned char gr_current_r = 255;
-static unsigned char gr_current_g = 255;
-static unsigned char gr_current_b = 255;
-static unsigned char gr_current_a = 255;
-
-static GRSurface* gr_draw = NULL;
-
 struct fb_var_screeninfo vi;
 static struct fb_fix_screeninfo fi;
 
@@ -582,8 +575,7 @@
 }
 
 void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy) {
-	// This is the old code, not sure if we still need it or not
-    /*if (gr_context == NULL) {
+    if (gr_context == NULL) {
         return;
     }
 
@@ -602,29 +594,7 @@
     gl->recti(gl, dx, dy, dx + w, dy + h);
 
     if(surface->format == GGL_PIXEL_FORMAT_RGBX_8888)
-        gl->enable(gl, GGL_BLEND);*/
-    if (source == NULL) return;
-
-    // This code doesn't compile yet, but may very well be needed later
-    /*if (gr_draw->pixel_bytes != source->pixel_bytes) {
-        printf("gr_blit: source has wrong format\n");
-        return;
-    }
-
-    dx += overscan_offset_x;
-    dy += overscan_offset_y;
-
-    if (outside(dx, dy) || outside(dx+w-1, dy+h-1)) return;*/
-
-    unsigned char* src_p = source->data + sy*source->row_bytes + sx*source->pixel_bytes;
-    unsigned char* dst_p = gr_draw->data + dy*gr_draw->row_bytes + dx*gr_draw->pixel_bytes;
-
-    int i;
-    for (i = 0; i < h; ++i) {
-        memcpy(dst_p, src_p, w * source->pixel_bytes);
-        src_p += source->row_bytes;
-        dst_p += gr_draw->row_bytes;
-    }
+        gl->enable(gl, GGL_BLEND);
 }
 
 unsigned int gr_get_width(gr_surface surface) {
