Index: uspace/app/vlaunch/Makefile
===================================================================
--- uspace/app/vlaunch/Makefile	(revision e31ea20dc683a642ed71e5e92feeef91e19975d0)
+++ uspace/app/vlaunch/Makefile	(revision b8f1a349f67ca808434a9c0b6754d78161794063)
@@ -35,5 +35,15 @@
 
 SOURCES = \
-	vlaunch.c
+	vlaunch.c \
+	images.c
+
+IMAGES = \
+	gfx/helenos.tga
+
+PRE_DEPEND = images.c images.h
+EXTRA_CLEAN = images.c images.h
 
 include $(USPACE_PREFIX)/Makefile.common
+
+images.c images.h: $(IMAGES)
+	$(ROOT_PATH)/tools/mkarray.py images COMPOSITOR_IMAGES $^
Index: uspace/app/vlaunch/vlaunch.c
===================================================================
--- uspace/app/vlaunch/vlaunch.c	(revision e31ea20dc683a642ed71e5e92feeef91e19975d0)
+++ uspace/app/vlaunch/vlaunch.c	(revision b8f1a349f67ca808434a9c0b6754d78161794063)
@@ -46,6 +46,17 @@
 #include <button.h>
 #include <label.h>
+#include <canvas.h>
 
-#define NAME "vlaunch"
+#include <surface.h>
+#include <source.h>
+#include <drawctx.h>
+#include <codec/tga.h>
+
+#include "images.h"
+
+#define NAME  "vlaunch"
+
+#define LOGO_WIDTH   64
+#define LOGO_HEIGHT  60
 
 static char *winreg = NULL;
@@ -97,4 +108,10 @@
 	}
 	
+	surface_t *logo = decode_tga((void *) helenos_tga, helenos_tga_size, 0);
+	if (!logo) {
+		printf("Unable to decode logo.\n");
+		return 1;
+	}
+	
 	winreg = argv[1];
 	window_t *main_window = window_open(argv[1], true, true, "vlaunch", 0, 0);
@@ -110,4 +127,6 @@
 	pixel_t lbl_fg = PIXEL(255, 0, 0, 0);
 	
+	canvas_t *logo_canvas = create_canvas(NULL, LOGO_WIDTH, LOGO_HEIGHT,
+	    logo);
 	label_t *lbl_caption = create_label(NULL, "Launch application:", 16,
 	    lbl_bg, lbl_fg);
@@ -118,8 +137,8 @@
 	button_t *btn_vlaunch = create_button(NULL, "vlaunch", 16, btn_bg,
 	    btn_fg);
-	grid_t *grid = create_grid(window_root(main_window), 4, 1, grd_bg);
+	grid_t *grid = create_grid(window_root(main_window), 5, 1, grd_bg);
 	
-	if ((!lbl_caption) || (!btn_vterm) || (!btn_vdemo) ||
-	    (!btn_vlaunch) || (!grid)) {
+	if ((!logo_canvas) || (!lbl_caption) || (!btn_vterm) ||
+	    (!btn_vdemo) || (!btn_vlaunch) || (!grid)) {
 		window_close(main_window);
 		printf("Cannot create widgets.\n");
@@ -131,11 +150,13 @@
 	sig_connect(&btn_vlaunch->clicked, NULL, on_vlaunch);
 	
-	grid->add(grid, &lbl_caption->widget, 0, 0, 1, 1);
-	grid->add(grid, &btn_vterm->widget, 1, 0, 1, 1);
-	grid->add(grid, &btn_vdemo->widget, 2, 0, 1, 1);
-	grid->add(grid, &btn_vlaunch->widget, 3, 0, 1, 1);
+	grid->add(grid, &logo_canvas->widget, 0, 0, 1, 1);
+	grid->add(grid, &lbl_caption->widget, 1, 0, 1, 1);
+	grid->add(grid, &btn_vterm->widget, 2, 0, 1, 1);
+	grid->add(grid, &btn_vdemo->widget, 3, 0, 1, 1);
+	grid->add(grid, &btn_vlaunch->widget, 4, 0, 1, 1);
 	
-	window_resize(main_window, 180, 130);
+	window_resize(main_window, 180, 280 + LOGO_HEIGHT);
 	window_exec(main_window);
+	
 	task_retval(0);
 	async_manager();
Index: uspace/lib/gui/Makefile
===================================================================
--- uspace/lib/gui/Makefile	(revision e31ea20dc683a642ed71e5e92feeef91e19975d0)
+++ uspace/lib/gui/Makefile	(revision b8f1a349f67ca808434a9c0b6754d78161794063)
@@ -35,4 +35,5 @@
 SOURCES = \
 	button.c \
+	canvas.c \
 	connection.c \
 	grid.c \
Index: uspace/srv/hid/compositor/Makefile
===================================================================
--- uspace/srv/hid/compositor/Makefile	(revision e31ea20dc683a642ed71e5e92feeef91e19975d0)
+++ uspace/srv/hid/compositor/Makefile	(revision b8f1a349f67ca808434a9c0b6754d78161794063)
@@ -38,5 +38,4 @@
 
 IMAGES = \
-	gfx/helenos.tga \
 	gfx/nameic.tga
 
Index: uspace/srv/hid/compositor/compositor.c
===================================================================
--- uspace/srv/hid/compositor/compositor.c	(revision e31ea20dc683a642ed71e5e92feeef91e19975d0)
+++ uspace/srv/hid/compositor/compositor.c	(revision b8f1a349f67ca808434a9c0b6754d78161794063)
@@ -1962,9 +1962,5 @@
 		}
 		list_prepend(&blue_win->link, &window_list);
-
-		window_t *helenos_win = window_create(0, 0);
-		helenos_win->surface = decode_tga((void *) helenos_tga, helenos_tga_size, 0);
-		list_prepend(&helenos_win->link, &window_list);
-
+		
 		window_t *nameic_win = window_create(0, 0);
 		nameic_win->surface = decode_tga((void *) nameic_tga, nameic_tga_size, 0);
