diff --git a/qt/python/mantidqt/widgets/instrumentview/presenter.py b/qt/python/mantidqt/widgets/instrumentview/presenter.py
index 2f0da5edaf4e287f32e38eac8f7b3ef7435b859f..2d045e6014ad8e9b72420938b3d6513641705f61 100644
--- a/qt/python/mantidqt/widgets/instrumentview/presenter.py
+++ b/qt/python/mantidqt/widgets/instrumentview/presenter.py
@@ -51,9 +51,7 @@ class InstrumentViewPresenter(ObservingPresenter):
                                but if it isn't - it does nothing
         """
         if self.ws_name == workspace_name:
-            # if the observer is not cleared here then the C++ object is never freed,
-            # and observers keep getting created, and triggering on ADS events
-            self.ads_observer = None
+            self.clear_observer()
             self.view.emit_close()
 
     def replace_workspace(self, workspace_name, workspace):