Index: uspace/app/tetris/screen.c
===================================================================
--- uspace/app/tetris/screen.c	(revision 4afb6c91df0d969238da3aab915a9e09020645bf)
+++ uspace/app/tetris/screen.c	(revision e1164613600a0df43a1291589bcb6a7c19456449)
@@ -72,5 +72,6 @@
 static int isset;               /* true => terminal is in game mode */
 
-static bool use_color;          /* true => use colors */
+static bool use_rgb;          /* true => use RGB colors */
+static bool use_color;          /* true => use indexed colors */
 
 static const struct shape *lastshape;
@@ -92,7 +93,21 @@
 static void start_standout(uint32_t color)
 {
+	uint8_t bg;
+	uint8_t attr;
+
 	console_flush(console);
-	console_set_rgb_color(console, use_color ? color : 0x000000,
-	    0xffffff);
+	if (use_rgb) {
+		console_set_rgb_color(console, color, 0xffffff);
+	} else if (use_color) {
+		bg = 0x00;
+		attr = 0;
+		if ((color & 0xff0000) != 0)
+			bg |= 0x4;
+		if ((color & 0x00ff00) != 0)
+			bg |= 0x2;
+		if ((color & 0x0000ff) != 0)
+			bg |= 0x1;
+		console_set_color(console, bg, 0x00, attr);
+	}
 }
 
@@ -143,13 +158,17 @@
 }
 
-static bool get_display_color_sup(void)
+static void get_display_color_sup(bool *rgb, bool *color)
 {
 	sysarg_t ccap;
 	errno_t rc = console_get_color_cap(console, &ccap);
 
-	if (rc != EOK)
-		return false;
-
-	return ((ccap & CONSOLE_CAP_RGB) == CONSOLE_CAP_RGB);
+	if (rc != EOK) {
+		*rgb = false;
+		*color = false;
+		return;
+	}
+
+	*rgb = ((ccap & CONSOLE_CAP_RGB) == CONSOLE_CAP_RGB);
+	*color = ((ccap & CONSOLE_CAP_INDEXED) == CONSOLE_CAP_INDEXED);
 }
 
@@ -169,5 +188,5 @@
 	}
 
-	use_color = get_display_color_sup();
+	get_display_color_sup(&use_rgb, &use_color);
 
 	if ((Rows < MINROWS) || (Cols < MINCOLS)) {
