Index: uspace/app/gfxdemo/gfxdemo.c
===================================================================
--- uspace/app/gfxdemo/gfxdemo.c	(revision 3e828ea40985ce126affd5d7faa6ba679802b4db)
+++ uspace/app/gfxdemo/gfxdemo.c	(revision 9be2358aadbef3865ee2b3ab546d8b1f56d79cd6)
@@ -44,5 +44,6 @@
 	console_ctrl_t *con = NULL;
 	gfx_color_t *color = NULL;
-	gfx_context_t *gc = NULL;
+	console_gc_t *cgc = NULL;
+	gfx_context_t *gc;
 	gfx_rect_t rect;
 	int i;
@@ -55,7 +56,9 @@
 
 	printf("Create console GC\n");
-	rc = console_gc_create(con, stdout, &gc);
+	rc = console_gc_create(con, stdout, &cgc);
 	if (rc != EOK)
 		return 1;
+
+	gc = console_gc_get_ctx(cgc);
 
 	while (true) {
@@ -85,9 +88,7 @@
 	}
 
-	// TODO How will we free GC subclass?
-
-	// rc = gfx_context_delete(gc);
-	// if (rc != EOK)
-	//	return 1;
+	rc = console_gc_delete(cgc);
+	if (rc != EOK)
+		return 1;
 
 	return 0;
Index: uspace/lib/gfx/include/gfx/backend/console.h
===================================================================
--- uspace/lib/gfx/include/gfx/backend/console.h	(revision 3e828ea40985ce126affd5d7faa6ba679802b4db)
+++ uspace/lib/gfx/include/gfx/backend/console.h	(revision 9be2358aadbef3865ee2b3ab546d8b1f56d79cd6)
@@ -45,5 +45,7 @@
 extern gfx_context_ops_t console_gc_ops;
 
-extern errno_t console_gc_create(console_ctrl_t *, FILE *, gfx_context_t **);
+extern errno_t console_gc_create(console_ctrl_t *, FILE *, console_gc_t **);
+extern errno_t console_gc_delete(console_gc_t *);
+extern gfx_context_t *console_gc_get_ctx(console_gc_t *);
 
 #endif
Index: uspace/lib/gfx/private/backend/console.h
===================================================================
--- uspace/lib/gfx/private/backend/console.h	(revision 3e828ea40985ce126affd5d7faa6ba679802b4db)
+++ uspace/lib/gfx/private/backend/console.h	(revision 9be2358aadbef3865ee2b3ab546d8b1f56d79cd6)
@@ -40,4 +40,5 @@
 #include <io/console.h>
 #include <stdio.h>
+#include "../context.h"
 
 /** Actual structure of graphics context.
@@ -46,4 +47,6 @@
  */
 struct console_gc {
+	/** Base graphic context */
+	gfx_context_t *gc;
 	/** Console control structure */
 	console_ctrl_t *con;
Index: uspace/lib/gfx/src/backend/console.c
===================================================================
--- uspace/lib/gfx/src/backend/console.c	(revision 3e828ea40985ce126affd5d7faa6ba679802b4db)
+++ uspace/lib/gfx/src/backend/console.c	(revision 9be2358aadbef3865ee2b3ab546d8b1f56d79cd6)
@@ -115,5 +115,5 @@
  */
 errno_t console_gc_create(console_ctrl_t *con, FILE *fout,
-    gfx_context_t **rgc)
+    console_gc_t **rgc)
 {
 	console_gc_t *cgc = NULL;
@@ -131,7 +131,8 @@
 		goto error;
 
+	cgc->gc = gc;
 	cgc->con = con;
 	cgc->fout = fout;
-	*rgc = gc;
+	*rgc = cgc;
 	return EOK;
 error:
@@ -142,4 +143,30 @@
 }
 
+/** Delete console GC.
+ *
+ * @param cgc Console GC
+ */
+errno_t console_gc_delete(console_gc_t *cgc)
+{
+	errno_t rc;
+
+	rc = gfx_context_delete(cgc->gc);
+	if (rc != EOK)
+		return rc;
+
+	free(cgc);
+	return EOK;
+}
+
+/** Get generic graphic context from console GC.
+ *
+ * @param cgc Console GC
+ * @return Graphic context
+ */
+gfx_context_t *console_gc_get_ctx(console_gc_t *cgc)
+{
+	return cgc->gc;
+}
+
 /** @}
  */
