Index: uspace/srv/hid/display/seat.c
===================================================================
--- uspace/srv/hid/display/seat.c	(revision b3825aa25045c00eb2e9a5ee1caea18fded81750)
+++ uspace/srv/hid/display/seat.c	(revision b5c7cee0d0320557f2b6847ba22aeeea442f852e)
@@ -90,4 +90,6 @@
 	if (wnd != NULL)
 		ds_window_post_focus_event(wnd);
+
+	ds_window_bring_to_top(wnd);
 }
 
Index: uspace/srv/hid/display/window.c
===================================================================
--- uspace/srv/hid/display/window.c	(revision b3825aa25045c00eb2e9a5ee1caea18fded81750)
+++ uspace/srv/hid/display/window.c	(revision b5c7cee0d0320557f2b6847ba22aeeea442f852e)
@@ -108,5 +108,5 @@
 	gfx_rect_translate(&wnd->dpos, &crect, &drect);
 
-	/* Render a copy to the backbuffer */
+	/* Render into the backbuffer */
 	for (y = crect.p0.y; y < crect.p1.y; y++) {
 		for (x = crect.p0.x; x < crect.p1.x; x++) {
@@ -116,5 +116,6 @@
 	}
 
-	return gfx_fill_rect(ds_display_get_gc(wnd->display), &drect);
+	/* Repaint this area of the display */
+	return ds_display_paint(wnd->display, &drect);
 }
 
@@ -183,4 +184,5 @@
 	gfx_rect_t swrect;
 	gfx_rect_t crect;
+	gfx_rect_t drect;
 	gfx_coord_t x, y;
 	pixelmap_t pixelmap;
@@ -212,4 +214,7 @@
 	/* Offset for rendering on screen = window pos + offs */
 	gfx_coord2_add(&cbm->wnd->dpos, &offs, &doffs);
+
+	/* Resulting rectangle on the screen we are drawing into */
+	gfx_rect_translate(&doffs, &crect, &drect);
 
 	rc = gfx_bitmap_get_alloc(cbm->bitmap, &alloc);
@@ -233,5 +238,6 @@
 	}
 
-	return gfx_bitmap_render(cbm->bitmap, &crect, &doffs);
+	/* Repaint this area of the display */
+	return ds_display_paint(cbm->wnd->display, &drect);
 }
 
@@ -394,4 +400,12 @@
 }
 
+void ds_window_bring_to_top(ds_window_t *wnd)
+{
+	ds_display_t *disp = wnd->display;
+
+	ds_display_remove_window(wnd);
+	ds_display_add_window(disp, wnd);
+}
+
 /** Get generic graphic context from window.
  *
Index: uspace/srv/hid/display/window.h
===================================================================
--- uspace/srv/hid/display/window.h	(revision b3825aa25045c00eb2e9a5ee1caea18fded81750)
+++ uspace/srv/hid/display/window.h	(revision b5c7cee0d0320557f2b6847ba22aeeea442f852e)
@@ -53,4 +53,5 @@
 extern void ds_window_destroy(ds_window_t *);
 extern errno_t ds_window_resize(ds_window_t *, gfx_coord2_t *, gfx_rect_t *);
+extern void ds_window_bring_to_top(ds_window_t *);
 extern gfx_context_t *ds_window_get_ctx(ds_window_t *);
 extern errno_t ds_window_paint(ds_window_t *, gfx_rect_t *);
