Index: uspace/lib/gui/window.c
===================================================================
--- uspace/lib/gui/window.c	(revision c8e1f933282d7ec1a4617eb97b3eb396813174fe)
+++ uspace/lib/gui/window.c	(revision 56dcf53d05925f1256253afa4c63580ec3d747f8)
@@ -68,4 +68,5 @@
 static sysarg_t close_thickness = 20;
 static sysarg_t corner_size = 24;
+static sysarg_t window_initial_size = 1;
 
 static pixel_t color_highlight = PIXEL(255, 255, 255, 255);
@@ -428,4 +429,34 @@
 	}
 
+	/* Place window, if appropriate */
+	if (placement_flags != WINDOW_PLACEMENT_ANY) {
+		dpos.x = 0;
+		dpos.y = 0;
+
+		rc = display_get_info(win->display, &dinfo);
+		if (rc != EOK) {
+			fibril_mutex_unlock(&win->guard);
+			return;
+		}
+
+		drect = dinfo.rect;
+
+		if (placement_flags & WINDOW_PLACEMENT_LEFT)
+			dpos.x = drect.p0.x;
+		else if (placement_flags & WINDOW_PLACEMENT_CENTER_X)
+			dpos.x = (drect.p0.x + drect.p1.x - width) / 2;
+		else
+			dpos.x = drect.p1.x - width;
+
+		if (placement_flags & WINDOW_PLACEMENT_TOP)
+			dpos.y = drect.p0.y;
+		else if (placement_flags & WINDOW_PLACEMENT_CENTER_Y)
+			dpos.y = (drect.p0.y + drect.p1.y - height) / 2;
+		else
+			dpos.y = drect.p1.y - height;
+
+		(void) display_window_move(win->dwindow, &dpos);
+	}
+
 	/* Resize the display window. */
 	offs.x = offset_x;
@@ -437,6 +468,8 @@
 
 	rc = display_window_resize(win->dwindow, &offs, &nrect);
-	if (rc != EOK)
-		return;
+	if (rc != EOK) {
+		fibril_mutex_unlock(&win->guard);
+		return;
+	}
 
 	gfx_bitmap_params_init(&params);
@@ -493,33 +526,4 @@
 	surface_reset_damaged_region(win->surface);
 	fibril_mutex_unlock(&win->guard);
-
-	if (placement_flags != WINDOW_PLACEMENT_ANY) {
-		dpos.x = 0;
-		dpos.y = 0;
-
-		rc = display_get_info(win->display, &dinfo);
-		if (rc != EOK) {
-			(void) gfx_bitmap_render(win->bitmap, NULL, NULL);
-			return;
-		}
-
-		drect = dinfo.rect;
-
-		if (placement_flags & WINDOW_PLACEMENT_LEFT)
-			dpos.x = drect.p0.x;
-		else if (placement_flags & WINDOW_PLACEMENT_CENTER_X)
-			dpos.x = (drect.p0.x + drect.p1.x - width) / 2;
-		else
-			dpos.x = drect.p1.x - width;
-
-		if (placement_flags & WINDOW_PLACEMENT_TOP)
-			dpos.y = drect.p0.y;
-		else if (placement_flags & WINDOW_PLACEMENT_CENTER_Y)
-			dpos.y = (drect.p0.y + drect.p1.y - height) / 2;
-		else
-			dpos.y = drect.p1.y - height;
-
-		(void) display_window_move(win->dwindow, &dpos);
-	}
 
 	(void) gfx_bitmap_render(win->bitmap, NULL, NULL);
@@ -688,5 +692,6 @@
 
 	/* Allocate resources for new surface. */
-	win->surface = surface_create(100, 100, NULL, SURFACE_FLAG_SHARED);
+	win->surface = surface_create( window_initial_size,
+	    window_initial_size, NULL, SURFACE_FLAG_SHARED);
 	if (win->surface == NULL) {
 		free(win);
@@ -705,6 +710,6 @@
 	wparams.rect.p0.x = 0;
 	wparams.rect.p0.y = 0;
-	wparams.rect.p1.x = 100;
-	wparams.rect.p1.y = 100;
+	wparams.rect.p1.x = window_initial_size;
+	wparams.rect.p1.y = window_initial_size;
 	wparams.min_size.x = 2 * border_thickness + header_min_width;
 	wparams.min_size.y = 2 * border_thickness + header_height;
