Index: kernel/genarch/src/fb/fb.c
===================================================================
--- kernel/genarch/src/fb/fb.c	(revision d681c173694bd83b842b2932968cec935ec1f26f)
+++ kernel/genarch/src/fb/fb.c	(revision 5035eeb7df49a2cd683a43225fb8349896e819e8)
@@ -395,4 +395,5 @@
 	sysinfo_set_item_val("fb.height", NULL, yres);
 	sysinfo_set_item_val("fb.bpp", NULL, bpp);
+	sysinfo_set_item_val("fb.bpp-align", NULL, align);
 	sysinfo_set_item_val("fb.scanline", NULL, scan);
 	sysinfo_set_item_val("fb.address.physical", NULL, addr);
Index: uspace/fb/fb.c
===================================================================
--- uspace/fb/fb.c	(revision d681c173694bd83b842b2932968cec935ec1f26f)
+++ uspace/fb/fb.c	(revision 5035eeb7df49a2cd683a43225fb8349896e819e8)
@@ -454,7 +454,9 @@
  * @param bpp  Bits per pixel (8, 16, 24, 32)
  * @param scan Bytes per one scanline
- *
- */
-static void screen_init(void *addr, unsigned int xres, unsigned int yres, unsigned int bpp, unsigned int scan)
+ * @param align Alignment for 24bpp mode.
+ *
+ */
+static void
+screen_init(void *addr, unsigned int xres, unsigned int yres, unsigned int bpp, unsigned int scan, int align)
 {
 	switch (bpp) {
@@ -472,5 +474,8 @@
 			screen.rgb2scr = rgb_3byte;
 			screen.scr2rgb = byte3_rgb;
-			screen.pixelbytes = 3;
+			if (!align)
+				screen.pixelbytes = 3;
+			else
+				screen.pixelbytes = 4;
 			break;
 		case 32:
@@ -1217,4 +1222,5 @@
 	unsigned int fb_height;
 	unsigned int fb_bpp;
+	unsigned int fb_bpp_align;
 	unsigned int fb_scanline;
 	void *fb_addr;
@@ -1227,4 +1233,5 @@
 	fb_height=sysinfo_value("fb.height");
 	fb_bpp=sysinfo_value("fb.bpp");
+	fb_bpp_align=sysinfo_value("fb.bpp-align");
 	fb_scanline=sysinfo_value("fb.scanline");
 
@@ -1235,5 +1242,5 @@
 		    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
 	
-	screen_init(fb_addr, fb_width, fb_height, fb_bpp, fb_scanline);
+	screen_init(fb_addr, fb_width, fb_height, fb_bpp, fb_scanline, fb_bpp_align);
 
 	return 0;
