Index: kernel/arch/sparc64/src/drivers/scr.c
===================================================================
--- kernel/arch/sparc64/src/drivers/scr.c	(revision 2bc137c2ead5aef4703a85727d96bf8f99c6f418)
+++ kernel/arch/sparc64/src/drivers/scr.c	(revision ccb0cbc16c5693f21db6f0a461d981ada016aad6)
@@ -144,5 +144,5 @@
 	case SCR_FFB:	
 		fb_scanline = 8192;
-		visual = VISUAL_RGB_0_8_8_8;
+		visual = VISUAL_BGR_0_8_8_8;
 
 		ofw_upa_reg_t *reg = &((ofw_upa_reg_t *) prop->value)[FFB_REG_24BPP];
Index: kernel/genarch/include/fb/visuals.h
===================================================================
--- kernel/genarch/include/fb/visuals.h	(revision 2bc137c2ead5aef4703a85727d96bf8f99c6f418)
+++ kernel/genarch/include/fb/visuals.h	(revision ccb0cbc16c5693f21db6f0a461d981ada016aad6)
@@ -37,4 +37,5 @@
 
 #define VISUAL_INDIRECT_8	0
+
 #define VISUAL_RGB_5_5_5	1
 #define VISUAL_RGB_5_6_5	2
@@ -43,4 +44,6 @@
 #define VISUAL_RGB_0_8_8_8	5
 
+#define VISUAL_BGR_0_8_8_8	6
+
 #endif
 
Index: kernel/genarch/src/fb/fb.c
===================================================================
--- kernel/genarch/src/fb/fb.c	(revision 2bc137c2ead5aef4703a85727d96bf8f99c6f418)
+++ kernel/genarch/src/fb/fb.c	(revision ccb0cbc16c5693f21db6f0a461d981ada016aad6)
@@ -106,4 +106,15 @@
 }
 
+static void bgr_byte0888(void *dst, int rgb)
+{
+	*((uint32_t *) dst) = BLUE(rgb, 8) << 16 | GREEN(rgb, 8) << 8 | RED(rgb, 8);
+}
+
+static int byte0888_bgr(void *src)
+{
+	int color = *(uint32_t *)(src);
+	return ((color & 0xff) << 16) | (((color >> 8) & 0xff) << 8) | ((color >> 16) & 0xff);
+}
+
 static void rgb_byte888(void *dst, int rgb)
 {
@@ -403,4 +414,9 @@
 		pixelbytes = 4;
 		break;
+	case VISUAL_BGR_0_8_8_8:
+		rgb2scr = bgr_byte0888;
+		scr2rgb = byte0888_bgr;
+		pixelbytes = 4;
+		break;
 	default:
 		panic("Unsupported visual.\n");
Index: uspace/fb/fb.c
===================================================================
--- uspace/fb/fb.c	(revision 2bc137c2ead5aef4703a85727d96bf8f99c6f418)
+++ uspace/fb/fb.c	(revision ccb0cbc16c5693f21db6f0a461d981ada016aad6)
@@ -160,4 +160,15 @@
 }
 
+static void bgr_byte0888(void *dst, int rgb)
+{
+	*((uint32_t *) dst) = BLUE(rgb, 8) << 16 | GREEN(rgb, 8) << 8 | RED(rgb, 8);
+}
+
+static int byte0888_bgr(void *src)
+{
+	int color = *(uint32_t *)(src);
+	return ((color & 0xff) << 16) | (((color >> 8) & 0xff) << 8) | ((color >> 16) & 0xff);
+}
+
 static void rgb_byte888(void *dst, int rgb)
 {
@@ -508,4 +519,9 @@
 		screen.rgb2scr = rgb_byte0888;
 		screen.scr2rgb = byte0888_rgb;
+		screen.pixelbytes = 4;
+		break;
+	case VISUAL_BGR_0_8_8_8:
+		screen.rgb2scr = bgr_byte0888;
+		screen.scr2rgb = byte0888_bgr;
 		screen.pixelbytes = 4;
 		break;
