Index: uspace/lib/gfxfont/src/text.c
===================================================================
--- uspace/lib/gfxfont/src/text.c	(revision 9eb8d1299776320d3c0fcf343379c808b0e62866)
+++ uspace/lib/gfxfont/src/text.c	(revision 95b7d4df17053b0cb97e9406f5af392aeab0f70b)
@@ -110,8 +110,10 @@
 	gfx_bitmap_t *bitmap;
 	gfx_bitmap_alloc_t alloc;
-	uint16_t r, g, b;
+	uint8_t attr;
 	pixelmap_t pmap;
 	gfx_coord_t x;
 	pixel_t pixel;
+	char32_t c;
+	size_t off;
 	errno_t rc;
 
@@ -121,13 +123,5 @@
 	 */
 
-	gfx_color_get_rgb_i16(color, &r, &g, &b);
-
-	/*
-	 * We are setting the *background* color, the foreground color
-	 * will be set to its complement.
-	 */
-	r = 0xff ^ (r >> 8);
-	g = 0xff ^ (g >> 8);
-	b = 0xff ^ (b >> 8);
+	gfx_color_get_ega(color, &attr);
 
 	gfx_bitmap_params_init(&params);
@@ -156,6 +150,11 @@
 	pmap.data = alloc.pixels;
 
+	off = 0;
 	for (x = 0; x < params.rect.p1.x; x++) {
-		pixel = PIXEL(str[x], r, g, b);
+		c = str_decode(str, &off, STR_NO_LIMIT);
+		pixel = PIXEL(attr,
+		    (c >> 16) & 0xff,
+		    (c >> 8) & 0xff,
+		    c & 0xff);
 		pixelmap_put_pixel(&pmap, x, 0, pixel);
 	}
