Index: uspace/app/terminal/terminal.c
===================================================================
--- uspace/app/terminal/terminal.c	(revision dcfd422dba88d6b14bf3fabca029117aa9922b5e)
+++ uspace/app/terminal/terminal.c	(revision 5a43bd076344b987a93fe6d2a60c42a1dcfb13eb)
@@ -298,5 +298,5 @@
 	bool front_visibility =
 	    chargrid_get_cursor_visibility(term->frontbuf) &&
-	    /*term->widget.window->is_focused*/true;
+	    term->is_focused;
 	bool back_visibility =
 	    chargrid_get_cursor_visibility(term->backbuf);
@@ -695,4 +695,7 @@
 		ui_wdecor_set_active(term->wdecor, true);
 		ui_wdecor_paint(term->wdecor);
+
+		term->is_focused = true;
+		term_update(term);
 	}
 }
@@ -713,4 +716,5 @@
 static void terminal_pos_event(void *arg, pos_event_t *event)
 {
+	cons_event_t cevent;
 	terminal_t *term = (terminal_t *) arg;
 
@@ -720,4 +724,18 @@
 
 	ui_wdecor_pos_event(term->wdecor, event);
+
+	sysarg_t sx = -term->off.x;
+	sysarg_t sy = -term->off.y;
+
+	if (event->type == POS_PRESS) {
+		cevent.type = CEV_POS;
+		cevent.ev.pos.type = event->type;
+		cevent.ev.pos.pos_id = event->pos_id;
+		cevent.ev.pos.btn_num = event->btn_num;
+
+		cevent.ev.pos.hpos = (event->hpos - sx) / FONT_WIDTH;
+		cevent.ev.pos.vpos = (event->vpos - sy) / FONT_SCANLINES;
+		terminal_queue_cons_event(term, &cevent);
+	}
 }
 
@@ -730,27 +748,9 @@
 		ui_wdecor_set_active(term->wdecor, false);
 		ui_wdecor_paint(term->wdecor);
-	}
-}
-
-#if 0
-static void terminal_handle_position_event(widget_t *widget, pos_event_t pos_event)
-{
-	cons_event_t event;
-	terminal_t *term = (terminal_t *) widget;
-	sysarg_t sx = term->widget.hpos;
-	sysarg_t sy = term->widget.vpos;
-
-	if (pos_event.type == POS_PRESS) {
-		event.type = CEV_POS;
-		event.ev.pos.type = pos_event.type;
-		event.ev.pos.pos_id = pos_event.pos_id;
-		event.ev.pos.btn_num = pos_event.btn_num;
-
-		event.ev.pos.hpos = (pos_event.hpos - sx) / FONT_WIDTH;
-		event.ev.pos.vpos = (pos_event.vpos - sy) / FONT_SCANLINES;
-		terminal_queue_cons_event(term, &event);
-	}
-}
-#endif
+
+		term->is_focused = false;
+		term_update(term);
+	}
+}
 
 /** Window decoration requested window closure.
@@ -869,4 +869,6 @@
 	gfx_rect_rtranslate(&off, &wrect, &wparams.rect);
 
+	term->off = off;
+
 	rc = display_window_create(display, &wparams, &terminal_wnd_cb,
 	    (void *) term, &term->window);
@@ -941,10 +943,10 @@
 	getterm(vc, "/app/bdsh");
 
-	term_repaint(term);
-
 	term->update.p0.x = 0;
 	term->update.p0.y = 0;
 	term->update.p1.x = 0;
 	term->update.p1.y = 0;
+
+	term_repaint(term);
 
 	*rterm = term;
Index: uspace/app/terminal/terminal.h
===================================================================
--- uspace/app/terminal/terminal.h	(revision dcfd422dba88d6b14bf3fabca029117aa9922b5e)
+++ uspace/app/terminal/terminal.h	(revision 5a43bd076344b987a93fe6d2a60c42a1dcfb13eb)
@@ -62,4 +62,6 @@
 	sysarg_t h;
 	gfx_rect_t update;
+	gfx_coord2_t off;
+	bool is_focused;
 
 	ui_resource_t *ui_res;
