Index: uspace/srv/hid/fb/port/kfb.c
===================================================================
--- uspace/srv/hid/fb/port/kfb.c	(revision 7c014d1fbbe9734e6ee3616fac584d8cc996df36)
+++ uspace/srv/hid/fb/port/kfb.c	(revision bbf159a20a99023b10c2a8bcff9b59156f1a59eb)
@@ -422,10 +422,14 @@
 {
 	if (kfb.backbuf == NULL) {
-		kfb.backbuf = malloc(kfb.size);
+		kfb.backbuf =
+		    malloc(kfb.width * kfb.height * kfb.pixel_bytes);
 		if (kfb.backbuf == NULL)
 			return ENOMEM;
 	}
 	
-	memcpy(kfb.backbuf, kfb.addr, kfb.size);
+	for (sysarg_t y = 0; y < kfb.height; y++)
+		memcpy(kfb.backbuf + y * kfb.width * kfb.pixel_bytes,
+		    kfb.addr + FB_POS(0, y), kfb.width * kfb.pixel_bytes);
+	
 	return EOK;
 }
@@ -436,5 +440,9 @@
 		return ENOENT;
 	
-	memcpy(kfb.addr, kfb.backbuf, kfb.size);
+	for (sysarg_t y = 0; y < kfb.height; y++)
+		memcpy(kfb.addr + FB_POS(0, y),
+		    kfb.backbuf + y * kfb.width * kfb.pixel_bytes,
+		    kfb.width * kfb.pixel_bytes);
+	
 	return EOK;
 }
