Index: kernel/arch/sparc64/src/drivers/scr.c
===================================================================
--- kernel/arch/sparc64/src/drivers/scr.c	(revision 2b1f8608eb11a5a5a4ef29c4d03641eff9b079ac)
+++ kernel/arch/sparc64/src/drivers/scr.c	(revision 20eb5e4d3d9057eaf8e976463ec55ff13ff5a8e3)
@@ -79,4 +79,5 @@
 	
 	uintptr_t fb_addr;
+	unsigned int fb_offset = 0;
 	uint32_t fb_width = 0;
 	uint32_t fb_height = 0;
@@ -168,8 +169,10 @@
 		}
 
+		fb_offset = 4 * 0x2000;
+
 		switch (fb_depth) {
 		case 8:
 			fb_scanline = fb_linebytes * (fb_depth >> 3);
-			visual = VISUAL_SB1500_PALETTE;
+			visual = VISUAL_INDIRECT_8;
 			break;
 		case 16:
@@ -226,5 +229,5 @@
 	fb_properties_t props = {
 		.addr = fb_addr,
-		.offset = 0,
+		.offset = fb_offset,
 		.x = fb_width,
 		.y = fb_height,
Index: kernel/genarch/include/fb/visuals.h
===================================================================
--- kernel/genarch/include/fb/visuals.h	(revision 2b1f8608eb11a5a5a4ef29c4d03641eff9b079ac)
+++ kernel/genarch/include/fb/visuals.h	(revision 20eb5e4d3d9057eaf8e976463ec55ff13ff5a8e3)
@@ -45,5 +45,4 @@
 
 #define VISUAL_BGR_0_8_8_8	6
-#define VISUAL_SB1500_PALETTE	7
 
 #endif
Index: kernel/genarch/src/fb/fb.c
===================================================================
--- kernel/genarch/src/fb/fb.c	(revision 2b1f8608eb11a5a5a4ef29c4d03641eff9b079ac)
+++ kernel/genarch/src/fb/fb.c	(revision 20eb5e4d3d9057eaf8e976463ec55ff13ff5a8e3)
@@ -190,24 +190,4 @@
 	*((uint8_t *) dst) = RED(rgb, 3) << 5 | GREEN(rgb, 2) << 3 |
 	    BLUE(rgb, 3);
-}
-
-static void sb1500rgb_byte8(void *dst, int rgb)
-{
-	if (RED(rgb, 1) && GREEN(rgb, 1) && BLUE(rgb, 1))
-		*((uint8_t *) dst) = 255;
-	else if (RED(rgb, 1) && GREEN(rgb, 1))
-		*((uint8_t *) dst) = 150;
-	else if (GREEN(rgb, 1) && BLUE(rgb, 1))
-		*((uint8_t *) dst) = 47;
-	else if (RED(rgb, 1) && BLUE(rgb, 1))
-		*((uint8_t *) dst) = 48;
-	else if (RED(rgb, 1))
-		*((uint8_t *) dst) = 32;
-	else if (GREEN(rgb, 1))
-		*((uint8_t *) dst) = 47;
-	else if (BLUE(rgb, 1))
-		*((uint8_t *) dst) = 2;
-	else 
-		*((uint8_t *) dst) = 1;
 }
 
@@ -467,9 +447,4 @@
 		pixelbytes = 1;
 		break;
-	case VISUAL_SB1500_PALETTE:
-		rgb2scr = sb1500rgb_byte8;
-		scr2rgb = byte8_rgb;
-		pixelbytes = 1;
-		break;
 	case VISUAL_RGB_5_5_5:
 		rgb2scr = rgb_byte555;
@@ -506,8 +481,9 @@
 	}
 	
-	unsigned int fbsize = props->scan * props->y + props->offset;
+	unsigned int fbsize = props->scan * props->y;
 	
 	/* Map the framebuffer */
-	fbaddress = (uint8_t *) hw_map((uintptr_t) props->addr, fbsize);
+	fbaddress = (uint8_t *) hw_map((uintptr_t) props->addr + props->offset,
+		fbsize);
 	fbaddress += props->offset;
 	
@@ -532,4 +508,5 @@
 	sysinfo_set_item_val("fb.visual", NULL, props->visual);
 	sysinfo_set_item_val("fb.address.physical", NULL, props->addr);
+	sysinfo_set_item_val("fb.offset", NULL, props->offset);
 	sysinfo_set_item_val("fb.invert-colors", NULL, invert_colors);
 
Index: uspace/srv/fb/fb.c
===================================================================
--- uspace/srv/fb/fb.c	(revision 2b1f8608eb11a5a5a4ef29c4d03641eff9b079ac)
+++ uspace/srv/fb/fb.c	(revision 20eb5e4d3d9057eaf8e976463ec55ff13ff5a8e3)
@@ -522,6 +522,7 @@
  */
 static bool
-screen_init(void *addr, unsigned int xres, unsigned int yres,
-	unsigned int scan, unsigned int visual, bool invert_colors)
+screen_init(void *addr, unsigned int offset, unsigned int xres,
+	unsigned int yres, unsigned int scan, unsigned int visual,
+	bool invert_colors)
 {
 	switch (visual) {
@@ -565,5 +566,5 @@
 	}
 
-	screen.fbaddress = (unsigned char *) addr;
+	screen.fbaddress = (unsigned char *) (((uintptr_t) addr) + offset);
 	screen.xres = xres;
 	screen.yres = yres;
@@ -1354,4 +1355,5 @@
 	unsigned int fb_scanline;
 	unsigned int fb_visual;
+	unsigned int fb_offset;
 	bool fb_invert_colors;
 	void *fb_addr;
@@ -1361,4 +1363,5 @@
 
 	fb_ph_addr = (void *) sysinfo_value("fb.address.physical");
+	fb_offset = sysinfo_value("fb.offset");
 	fb_width = sysinfo_value("fb.width");
 	fb_height = sysinfo_value("fb.height");
@@ -1370,8 +1373,8 @@
 	fb_addr = as_get_mappable_page(asz);
 	
-	physmem_map(fb_ph_addr, fb_addr, ALIGN_UP(asz, PAGE_SIZE) >>
+	physmem_map(fb_ph_addr + fb_offset, fb_addr, ALIGN_UP(asz, PAGE_SIZE) >>
 	    PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE);
 
-	if (screen_init(fb_addr, fb_width, fb_height, fb_scanline, fb_visual,
+	if (screen_init(fb_addr, fb_offset, fb_width, fb_height, fb_scanline, fb_visual,
 	    fb_invert_colors))
 		return 0;
