Index: genarch/src/fb/fb.c
===================================================================
--- genarch/src/fb/fb.c	(revision e459f12348652b4c98137ebaede99019122ecc24)
+++ genarch/src/fb/fb.c	(revision 74d1d662d97be51dd27ddebf15e5725d5eab707a)
@@ -31,6 +31,8 @@
 #include <console/chardev.h>
 #include <console/console.h>
+#include <mm/slab.h>
 #include <panic.h>
 #include <memstr.h>
+#include <config.h>
 
 #include "helenos.xbm"
@@ -39,4 +41,6 @@
 
 static __u8 *fbaddress = NULL;
+
+static __u8 *blankline = NULL;
 
 static unsigned int xres = 0;
@@ -160,10 +164,22 @@
 {
 	unsigned int i;
+	__u8 *lastline = &fbaddress[(rows - 1) * ROW_BYTES];
 
 	memcpy((void *) fbaddress, (void *) &fbaddress[ROW_BYTES], scanline * yres - ROW_BYTES);
 
 	/* Clear last row */
-	for (i = 0; i < FONT_SCANLINES; i++)
-		clear_line((rows - 1) * FONT_SCANLINES + i);
+	if (blankline) {
+		memcpy((void *) lastline, (void *) blankline, ROW_BYTES);
+	} else {
+		for (i = 0; i < FONT_SCANLINES; i++)
+			clear_line((rows - 1) * FONT_SCANLINES + i);
+
+		if (config.mm_initialized) {
+			/* Save a blank line aside. */
+			blankline = (__u8 *) malloc(ROW_BYTES, FRAME_ATOMIC);
+			if (blankline)
+				memcpy((void *) blankline, (void *) lastline, ROW_BYTES);
+		}
+	}
 }
 
