Index: uspace/app/bdsh/cmds/modules/cat/cat.c
===================================================================
--- uspace/app/bdsh/cmds/modules/cat/cat.c	(revision 8fb1103ec872fb677cf3887f13c4b1064c7aaa77)
+++ uspace/app/bdsh/cmds/modules/cat/cat.c	(revision b7c33b0fe7496d849c86aa6a08470f9f4baf71c4)
@@ -103,5 +103,5 @@
 {
 	console_set_pos(console, 0, console_rows-1);
-	console_set_color(console, COLOR_BLUE, COLOR_WHITE, 0);
+	console_set_color(console, COLOR_WHITE, COLOR_BLUE, 0);
 	
 	printf("ENTER/SPACE/PAGE DOWN - next page, "
Index: uspace/app/init/init.c
===================================================================
--- uspace/app/init/init.c	(revision 8fb1103ec872fb677cf3887f13c4b1064c7aaa77)
+++ uspace/app/init/init.c	(revision b7c33b0fe7496d849c86aa6a08470f9f4baf71c4)
@@ -196,21 +196,29 @@
 }
 
-static void console(const char *svc)
-{
-	printf("%s: Spawning %s %s\n", NAME, SRV_CONSOLE, svc);
+static void console(const char *isvc, const char *fbsvc)
+{
+	printf("%s: Spawning %s %s %s\n", NAME, SRV_CONSOLE, isvc, fbsvc);
 	
 	/* Wait for the input service to be ready */
 	service_id_t service_id;
-	int rc = loc_service_get_id(svc, &service_id, IPC_FLAG_BLOCKING);
-	if (rc != EOK) {
-		printf("%s: Error waiting on %s (%s)\n", NAME, svc,
-		    str_error(rc));
-		return;
-	}
-	
-	rc = task_spawnl(NULL, SRV_CONSOLE, SRV_CONSOLE, svc, NULL);
-	if (rc != EOK) {
-		printf("%s: Error spawning %s %s (%s)\n", NAME, SRV_CONSOLE,
-		    svc, str_error(rc));
+	int rc = loc_service_get_id(isvc, &service_id, IPC_FLAG_BLOCKING);
+	if (rc != EOK) {
+		printf("%s: Error waiting on %s (%s)\n", NAME, isvc,
+		    str_error(rc));
+		return;
+	}
+	
+	/* Wait for the framebuffer service to be ready */
+	rc = loc_service_get_id(fbsvc, &service_id, IPC_FLAG_BLOCKING);
+	if (rc != EOK) {
+		printf("%s: Error waiting on %s (%s)\n", NAME, fbsvc,
+		    str_error(rc));
+		return;
+	}
+	
+	rc = task_spawnl(NULL, SRV_CONSOLE, SRV_CONSOLE, isvc, fbsvc, NULL);
+	if (rc != EOK) {
+		printf("%s: Error spawning %s %s %s (%s)\n", NAME, SRV_CONSOLE,
+		    isvc, fbsvc, str_error(rc));
 	}
 }
@@ -300,5 +308,5 @@
 	spawn("/srv/fb");
 	spawn("/srv/input");
-	console("hid/input");
+	console("hid/input", "hid/fb0");
 	
 	spawn("/srv/clip");
Index: uspace/app/tester/console/console1.c
===================================================================
--- uspace/app/tester/console/console1.c	(revision 8fb1103ec872fb677cf3887f13c4b1064c7aaa77)
+++ uspace/app/tester/console/console1.c	(revision b7c33b0fe7496d849c86aa6a08470f9f4baf71c4)
@@ -76,5 +76,5 @@
 			for (i = COLOR_BLACK; i <= COLOR_WHITE; i++) {
 				console_flush(console);
-				console_set_color(console, i, COLOR_WHITE,
+				console_set_color(console, COLOR_WHITE, i,
 				    j ? CATTR_BRIGHT : 0);
 				printf(" %s ", color_name[i]);
@@ -89,5 +89,5 @@
 			for (i = COLOR_BLACK; i <= COLOR_WHITE; i++) {
 				console_flush(console);
-				console_set_color(console, COLOR_WHITE, i,
+				console_set_color(console, i, COLOR_WHITE,
 				    j ? CATTR_BRIGHT : 0);
 				printf(" %s ", color_name[i]);
@@ -102,23 +102,23 @@
 		for (i = 0; i < 255; i += 16) {
 			console_flush(console);
-			console_set_rgb_color(console, (255 - i) << 16, i << 16);
+			console_set_rgb_color(console, i << 16, (255 - i) << 16);
 			putchar('X');
 		}
 		console_flush(console);
-		console_set_color(console, COLOR_BLACK, COLOR_WHITE, 0);
+		console_set_color(console, COLOR_WHITE, COLOR_BLACK, 0);
 		putchar('\n');
 		
 		for (i = 0; i < 255; i += 16) {
 			console_flush(console);
-			console_set_rgb_color(console, (255 - i) << 8, i << 8);
+			console_set_rgb_color(console, i << 8, (255 - i) << 8);
 			putchar('X');
 		}
 		console_flush(console);
-		console_set_color(console, COLOR_BLACK, COLOR_WHITE, 0);
+		console_set_color(console, COLOR_WHITE, COLOR_BLACK, 0);
 		putchar('\n');
 		
 		for (i = 0; i < 255; i += 16) {
 			console_flush(console);
-			console_set_rgb_color(console, 255 - i, i);
+			console_set_rgb_color(console, i, 255 - i);
 			putchar('X');
 		}
Index: uspace/app/tetris/screen.c
===================================================================
--- uspace/app/tetris/screen.c	(revision 8fb1103ec872fb677cf3887f13c4b1064c7aaa77)
+++ uspace/app/tetris/screen.c	(revision b7c33b0fe7496d849c86aa6a08470f9f4baf71c4)
@@ -95,6 +95,6 @@
 {
 	console_flush(console);
-	console_set_rgb_color(console, 0xffffff,
-	    use_color ? color : 0x000000);
+	console_set_rgb_color(console, use_color ? color : 0x000000,
+	    0xffffff);
 }
 
@@ -153,5 +153,5 @@
 		return false;
 	
-	return (ccap >= CONSOLE_CCAP_RGB);
+	return ((ccap & CONSOLE_CAP_RGB) == CONSOLE_CAP_RGB);
 }
 
Index: uspace/app/trace/trace.c
===================================================================
--- uspace/app/trace/trace.c	(revision 8fb1103ec872fb677cf3887f13c4b1064c7aaa77)
+++ uspace/app/trace/trace.c	(revision b7c33b0fe7496d849c86aa6a08470f9f4baf71c4)
@@ -86,5 +86,4 @@
 void thread_trace_start(uintptr_t thread_hash);
 
-static proto_t *proto_console;
 static task_id_t task_id;
 static loader_t *task_ldr;
@@ -659,10 +658,4 @@
 	ipcp_init();
 
-	/* 
-	 * User apps now typically have console on phone 3.
-	 * (Phones 1 and 2 are used by the loader).
-	 */
-	ipcp_connection_set(3, 0, proto_console);
-
 	rc = get_thread_list();
 	if (rc < 0) {
@@ -714,4 +707,6 @@
 			fibril_mutex_unlock(&state_lock);
 			printf("Resume...\n");
+			break;
+		default:
 			break;
 		}
@@ -790,42 +785,4 @@
 
 	proto_register(SERVICE_VFS, p);
-
-#if 0
-	p = proto_new("console");
-
-	o = oper_new("write", 1, arg_def, V_ERRNO, 1, resp_def);
-	proto_add_oper(p, VFS_IN_WRITE, o);
-
-	resp_def[0] = V_INTEGER; resp_def[1] = V_INTEGER;
-	resp_def[2] = V_INTEGER; resp_def[3] = V_CHAR;
-	o = oper_new("getkey", 0, arg_def, V_ERRNO, 4, resp_def);
-
-	arg_def[0] = V_CHAR;
-	o = oper_new("clear", 0, arg_def, V_VOID, 0, resp_def);
-	proto_add_oper(p, CONSOLE_CLEAR, o);
-
-	arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER;
-	o = oper_new("goto", 2, arg_def, V_VOID, 0, resp_def);
-	proto_add_oper(p, CONSOLE_GOTO, o);
-
-	resp_def[0] = V_INTEGER; resp_def[1] = V_INTEGER;
-	o = oper_new("getsize", 0, arg_def, V_INTEGER, 2, resp_def);
-	proto_add_oper(p, CONSOLE_GET_SIZE, o);
-
-	arg_def[0] = V_INTEGER;
-	o = oper_new("set_style", 1, arg_def, V_VOID, 0, resp_def);
-	proto_add_oper(p, CONSOLE_SET_STYLE, o);
-	arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER; arg_def[2] = V_INTEGER;
-	o = oper_new("set_color", 3, arg_def, V_VOID, 0, resp_def);
-	proto_add_oper(p, CONSOLE_SET_COLOR, o);
-	arg_def[0] = V_INTEGER; arg_def[1] = V_INTEGER;
-	o = oper_new("set_rgb_color", 2, arg_def, V_VOID, 0, resp_def);
-	proto_add_oper(p, CONSOLE_SET_RGB_COLOR, o);
-	o = oper_new("cursor_visibility", 1, arg_def, V_VOID, 0, resp_def);
-	proto_add_oper(p, CONSOLE_CURSOR_VISIBILITY, o);
-
-	proto_console = p;
-	proto_register(SERVICE_CONSOLE, p);
-#endif
 }
 
