diff --git a/src/vtedraw.cc b/src/vtedraw.cc
index a47efae..46bad99 100644
--- a/src/vtedraw.cc
+++ b/src/vtedraw.cc
@@ -1307,14 +1307,32 @@ _vte_draw_terminal_draw_graphic(struct _vte_draw *draw, vteunistr c, vte::color:
         case 0x2591: /* light shade */
         case 0x2592: /* medium shade */
         case 0x2593: /* dark shade */
-                cairo_set_source_rgba (cr,
-                                       fg->red / 65535.,
-                                       fg->green / 65535.,
-                                       fg->blue / 65535.,
-                                       (c - 0x2590) / 4.);
-                cairo_rectangle(cr, x, y, width, row_height);
-                cairo_fill (cr);
+        {
+                int xn = 8, yn = 12;  // XXX Manually adjust these for the time being. Even numbers, xn should also be dividable by 4 with the current pattern!
+                int xi, yi;
+                for (xi = 0; xi < xn; xi++) {
+                        for (yi = 0; yi < yn; yi++) {
+                                gboolean paint;
+                                if (c == 0x2592) {
+                                        paint = !((xi ^ yi) & 1);
+                                } else {
+                                        paint = (xi % 2 == 0) && !(((xi >> 1) ^ (yi)) & 1);
+                                        if (c == 0x2593) {
+                                                paint = !paint;
+                                        }
+                                }
+                                if (paint) {
+                                        cairo_rectangle(cr,
+                                                        x + (double)column_width * xi / xn,
+                                                        y + (double)row_height * yi / yn,
+                                                        (double)column_width / xn,
+                                                        (double)row_height / yn);
+                                        cairo_fill(cr);
+                                }
+                        }
+                }
                 break;
+        }
 
         case 0x2594: /* upper one eighth block */
         {
