diff --git a/modules/gui/src/gl_canvas.cc b/modules/gui/src/gl_canvas.cc
index c6f28c8a5d2a5593239fc4d23b3bc6664592073b..449f7bb3ba2613aeae96824ff7ee8055d4a000c2 100644
--- a/modules/gui/src/gl_canvas.cc
+++ b/modules/gui/src/gl_canvas.cc
@@ -41,6 +41,10 @@ ost::gui::GLCanvas::GLCanvas(): QOpenGLWindow(),
   gfx::Scene::Instance().Register(this);  
 }
 
+ost::gui::GLCanvas::~GLCanvas() {
+  gfx::Scene::Instance().Unregister(this);
+}
+
 void GLCanvas::StatusMessage(const String& m) {
   // This Window can also be displayed without a full blown GostyApp.
   // We therefore only feed the message into Gosty if there's already
diff --git a/modules/gui/src/gl_canvas.hh b/modules/gui/src/gl_canvas.hh
index 4d87a259aec6de8136a731b0ce95e79b1e79b27b..7f7c89e0808d1b224e0e5061bd80bcc7de0185a3 100644
--- a/modules/gui/src/gl_canvas.hh
+++ b/modules/gui/src/gl_canvas.hh
@@ -37,6 +37,7 @@ class GLCanvas : public QOpenGLWindow, public gfx::GLWinBase {
 
 public:
   GLCanvas();
+  virtual ~GLCanvas();
 
   // gfx::GLWinBase interface
   virtual void MakeActive() { this->makeCurrent(); }