Index: uspace/lib/congfx/private/console.h
===================================================================
--- uspace/lib/congfx/private/console.h	(revision f73a8e3981971a6da2b9fc7a799437eed3f87c0e)
+++ uspace/lib/congfx/private/console.h	(revision 344f8b9676d75eba698bf4c544efadcaaef4beaf)
@@ -55,4 +55,6 @@
 	/** Console bounding rectangle */
 	gfx_rect_t rect;
+	/** Clipping rectangle */
+	gfx_rect_t clip_rect;
 	/** File for printing characters */
 	FILE *fout;
Index: uspace/lib/congfx/src/console.c
===================================================================
--- uspace/lib/congfx/src/console.c	(revision f73a8e3981971a6da2b9fc7a799437eed3f87c0e)
+++ uspace/lib/congfx/src/console.c	(revision 344f8b9676d75eba698bf4c544efadcaaef4beaf)
@@ -48,4 +48,5 @@
 #include "../private/color.h"
 
+static errno_t console_gc_set_clip_rect(void *, gfx_rect_t *);
 static errno_t console_gc_set_color(void *, gfx_color_t *);
 static errno_t console_gc_fill_rect(void *, gfx_rect_t *);
@@ -58,4 +59,5 @@
 
 gfx_context_ops_t console_gc_ops = {
+	.set_clip_rect = console_gc_set_clip_rect,
 	.set_color = console_gc_set_color,
 	.fill_rect = console_gc_fill_rect,
@@ -67,4 +69,23 @@
 };
 
+/** Set clipping rectangle on console GC.
+ *
+ * @param arg Console GC
+ * @param rect Rectangle
+ *
+ * @return EOK on success or an error code
+ */
+static errno_t console_gc_set_clip_rect(void *arg, gfx_rect_t *rect)
+{
+	console_gc_t *cgc = (console_gc_t *) arg;
+
+	if (rect != NULL)
+		gfx_rect_clip(rect, &cgc->rect, &cgc->clip_rect);
+	else
+		cgc->clip_rect = cgc->rect;
+
+	return EOK;
+}
+
 /** Set color on console GC.
  *
@@ -100,5 +121,5 @@
 
 	/* Make sure rectangle is clipped and sorted */
-	gfx_rect_clip(rect, &cgc->rect, &crect);
+	gfx_rect_clip(rect, &cgc->clip_rect, &crect);
 
 	cols = cgc->rect.p1.x - cgc->rect.p0.x;
@@ -188,4 +209,5 @@
 	cgc->rect.p1.x = cols;
 	cgc->rect.p1.y = rows;
+	cgc->clip_rect = cgc->rect;
 	cgc->buf = buf;
 
@@ -330,5 +352,5 @@
 
 	gfx_rect_translate(&offs, &srect, &drect);
-	gfx_rect_clip(&drect, &cbm->cgc->rect, &crect);
+	gfx_rect_clip(&drect, &cbm->cgc->clip_rect, &crect);
 
 	pixelmap.width = cbm->rect.p1.x - cbm->rect.p0.x;
