Index: kernel/genarch/src/fb/fb.c
===================================================================
--- kernel/genarch/src/fb/fb.c	(revision aafed151536405cdb1390b88b7e4ac7c285dd53e)
+++ kernel/genarch/src/fb/fb.c	(revision 40043e8d61ecdedef8f915d74b90ad59d8d19f85)
@@ -76,4 +76,6 @@
 	    (instance)->cols + (col))
 
+#define BB_NEXT_COL(pos) (++(pos))
+
 #define GLYPH_POS(instance, glyph, y) \
 	((glyph) * (instance)->glyphbytes + (y) * (instance)->glyphscanline)
@@ -270,4 +272,6 @@
 				unsigned int x;
 				unsigned int col;
+				size_t bb_pos = BB_POS(instance, 0, row);
+				size_t bb_pos1 = BB_POS(instance, 0, row + 1);
 
 				for (col = 0, x = 0; col < instance->cols;
@@ -276,9 +280,9 @@
 
 					if (row < instance->rows - 1) {
-						if (instance->backbuf[BB_POS(instance, col, row)] ==
-						    instance->backbuf[BB_POS(instance, col, row + 1)])
-							continue;
-
-						glyph = instance->backbuf[BB_POS(instance, col, row + 1)];
+						if (instance->backbuf[bb_pos] ==
+						    instance->backbuf[bb_pos1])
+							goto skip;
+
+						glyph = instance->backbuf[bb_pos1];
 					} else
 						glyph = 0;
@@ -287,4 +291,7 @@
 					    &instance->glyphs[GLYPH_POS(instance, glyph, yd)],
 					    instance->glyphscanline);
+				skip:
+					BB_NEXT_COL(bb_pos);
+					BB_NEXT_COL(bb_pos1);
 				}
 			}
@@ -373,12 +380,14 @@
 			unsigned int x;
 			unsigned int col;
+			size_t bb_pos = BB_POS(instance, 0, row);
 
 			for (col = 0, x = 0; col < instance->cols;
 			    col++, x += FONT_WIDTH) {
 				uint16_t glyph =
-				    instance->backbuf[BB_POS(instance, col, row)];
+				    instance->backbuf[bb_pos];
 				void *dst = &instance->addr[FB_POS(instance, x, y + yd)];
 				void *src = &instance->glyphs[GLYPH_POS(instance, glyph, yd)];
 				memcpy(dst, src, instance->glyphscanline);
+				BB_NEXT_COL(bb_pos);
 			}
 		}
