diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp
index 8b39b8c31bdff6decbf6120a6482fa6708e21758..6ba33c9b489e235220e067d3794dab537fb6f233 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp
@@ -28,15 +28,13 @@ RealSpaceCanvas::RealSpaceCanvas(QWidget* parent)
     : QWidget(parent), m_sampleModel(nullptr), m_view(new RealSpaceView), m_view_locked(false),
       m_sceneGeometry(new SceneGeometry), m_warningSign(new WarningSign(this))
 {
+    qDebug() << "RealSpaceCanvas::RealSpaceCanvas";
+
     QVBoxLayout* layout = new QVBoxLayout;
     layout->setMargin(0);
     layout->setSpacing(0);
     layout->addWidget(m_view);
     setLayout(layout);
-
-    // listening whether Lock View box in RealSpaceToolBar has been unchecked or not
-    // in order to display the current selection as soon as the box is unchecked
-    connect(this, &RealSpaceCanvas::lockViewUnchecked, this, &RealSpaceCanvas::updateToSelection);
 }
 
 RealSpaceCanvas::~RealSpaceCanvas()
@@ -45,6 +43,8 @@ RealSpaceCanvas::~RealSpaceCanvas()
 
 void RealSpaceCanvas::setModel(SampleModel* sampleModel, QItemSelectionModel* selectionModel)
 {
+    qDebug() << "RealSpaceCanvas::setModel";
+
     if (sampleModel != m_sampleModel) {
 
         if (m_sampleModel)
@@ -52,33 +52,39 @@ void RealSpaceCanvas::setModel(SampleModel* sampleModel, QItemSelectionModel* se
 
         m_sampleModel = sampleModel;
 
+        if (m_sampleModel)
+            setConnected(m_sampleModel, true);
+    }
+
+    if (selectionModel != m_selectionModel) {
+        if (m_selectionModel)
+            disconnect(m_selectionModel, &QItemSelectionModel::selectionChanged,
+                       this, &RealSpaceCanvas::onSelectionChanged);
+
         m_selectionModel = selectionModel;
 
-        if (m_sampleModel && !isHidden()) {
-            setConnected(m_sampleModel, true);
-            if (selectionModel != nullptr) {
-                QModelIndexList indices = m_selectionModel->selection().indexes();
-                if (indices.size())
-                    m_currentSelection = FilterPropertyProxy::toSourceIndex(indices.back());
-            }
-
-            if (!m_view_locked)
-                updateScene();
-        }
+        if (m_selectionModel)
+            connect(m_selectionModel, &QItemSelectionModel::selectionChanged,
+                    this, &RealSpaceCanvas::onSelectionChanged);
     }
+
+    updateToSelection();
 }
 
-void RealSpaceCanvas::onSelectionChanged(const QItemSelection& selection /* selection */,
+void RealSpaceCanvas::onSelectionChanged(const QItemSelection&  /* selection */,
                                          const QItemSelection& /* deselection */)
 {
     // propagate selection from selectionChanged() signal to updateToSelection() method
-    updateToSelection(selection);
+    updateToSelection();
 }
 
-void RealSpaceCanvas::updateToSelection(const QItemSelection& selection)
+void RealSpaceCanvas::updateToSelection()
 {
+    if (!m_selectionModel)
+        return;
+
     if (!m_view_locked) {
-        QModelIndexList indices = selection.indexes();
+        QModelIndexList indices = m_selectionModel->selection().indexes();
 
         if (indices.size())
             m_currentSelection = FilterPropertyProxy::toSourceIndex(indices.back());
@@ -111,7 +117,7 @@ void RealSpaceCanvas::onLockViewAction(bool view_locked)
     // unchecked (false), then emit a signal to display the current selection on the canvas
     if (m_view_locked && !view_locked) {
         m_view_locked = view_locked;
-        emit lockViewUnchecked(m_selectionModel->selection());
+        updateToSelection();
     } else
         m_view_locked = view_locked;
 }
@@ -195,17 +201,6 @@ void RealSpaceCanvas::topView()
     m_view->topView();
 }
 
-void RealSpaceCanvas::showEvent(QShowEvent*)
-{
-    setConnected(m_sampleModel, true);
-    updateScene();
-}
-
-void RealSpaceCanvas::hideEvent(QHideEvent*)
-{
-    setConnected(m_sampleModel, false);
-}
-
 void RealSpaceCanvas::setConnected(SampleModel* model, bool makeConnected)
 {
     if (!model)
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.h b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.h
index 66fee97bcba77172b90046575c769c1fbf0a2b5e..16ed6aa0c308ea9829c0c84af47e27008721ee00 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.h
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.h
@@ -88,12 +88,9 @@ public:
     void setModel(SampleModel* sampleModel = nullptr,
                   QItemSelectionModel* selectionModel = nullptr);
 
-signals:
-    void lockViewUnchecked(const QItemSelection&);
-
 public slots:
-    void onSelectionChanged(const QItemSelection& selection, const QItemSelection&);
-    void updateToSelection(const QItemSelection& selection);
+    void onSelectionChanged(const QItemSelection&, const QItemSelection&);
+    void updateToSelection();
 
     void onDefaultViewAction();
     void onSideViewAction();
@@ -110,10 +107,6 @@ private slots:
     void sideView();
     void topView();
 
-protected:
-    virtual void showEvent(QShowEvent*);
-    virtual void hideEvent(QHideEvent*);
-
 private:
     void setConnected(SampleModel* model, bool makeConnected);
 
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceDialog.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceDialog.cpp
index f541b948d0c5945e57e49de3925e8faa83729398..92484f7afe31284cd419d6b16a21e1d751cf584c 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceDialog.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceDialog.cpp
@@ -49,7 +49,6 @@ RealSpaceDialog::RealSpaceDialog(SampleModel *sampleModel,
 
     #ifdef BORNAGAIN_OPENGL
     RealSpaceWidget* widget = new RealSpaceWidget(m_sampleModel, m_selectionModel);
-    widget->setModel(m_sampleModel, m_selectionModel);
     layout->addWidget(widget);
     #endif
 
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp
index 0f467a90c21034a9bdb4beac51135056519924d6..d7cc40ca354186f2f33533429adbecbfcd716f87 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp
@@ -29,13 +29,14 @@ RealSpaceWidget::RealSpaceWidget(SampleModel *sampleModel,
     , m_sampleModel(sampleModel)
     , m_selectionModel(selectionModel)
 {
-    QHBoxLayout* hlayout = new QHBoxLayout;
+    qDebug() << "RealSpaceWidget::RealSpaceWidget";
+    auto hlayout = new QHBoxLayout;
     hlayout->setMargin(0);
     hlayout->setSpacing(0);
     hlayout->setContentsMargins(0, 0, 0, 0);
     hlayout->addWidget(m_canvas);
 
-    QVBoxLayout *mainLayout = new QVBoxLayout;
+    auto *mainLayout = new QVBoxLayout;
     mainLayout->setMargin(0);
     mainLayout->setSpacing(0);
     mainLayout->setContentsMargins(0,0,0,0);
@@ -44,9 +45,6 @@ RealSpaceWidget::RealSpaceWidget(SampleModel *sampleModel,
 
     setLayout(mainLayout);
 
-    connect(m_selectionModel, &QItemSelectionModel::selectionChanged,
-            m_canvas, &RealSpaceCanvas::onSelectionChanged);
-
     connect(m_toolBar, &RealSpaceToolBar::defaultViewAction,
             m_canvas, &RealSpaceCanvas::onDefaultViewAction);
 
@@ -62,12 +60,16 @@ RealSpaceWidget::RealSpaceWidget(SampleModel *sampleModel,
     connect(m_toolBar, &RealSpaceToolBar::changeLayerSizeAction,
             m_canvas, &RealSpaceCanvas::onChangeLayerSizeAction);
 
-    setModel(sampleModel, selectionModel);
 }
 
-void RealSpaceWidget::setModel(SampleModel* sampleModel, QItemSelectionModel *selectionModel)
+void RealSpaceWidget::showEvent(QShowEvent*)
 {
-    m_sampleModel = sampleModel;
-    m_selectionModel = selectionModel;
+    qDebug() << "RealSpaceWidget::showEvent";
     m_canvas->setModel(m_sampleModel, m_selectionModel);
 }
+
+void RealSpaceWidget::hideEvent(QHideEvent*)
+{
+    qDebug() << "RealSpaceWidget::hideEvent";
+    m_canvas->setModel(nullptr, nullptr);
+}
diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h
index 87e0ab9564fe160a255c72941e02b10b35a716cd..d277cfb88b6d1f793b48c6243f817ea889bf543c 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h
@@ -35,7 +35,9 @@ public:
     RealSpaceWidget(SampleModel* sampleModel = nullptr,
                     QItemSelectionModel* selectionModel = nullptr, QWidget* parent = nullptr);
 
-    void setModel(SampleModel* model, QItemSelectionModel* selectionModel);
+protected:
+    void showEvent(QShowEvent*);
+    void hideEvent(QHideEvent*);
 
 private:
     RealSpaceActions* m_actions;
diff --git a/GUI/coregui/Views/TestView.cpp b/GUI/coregui/Views/TestView.cpp
index 6e09826c6f4ea8b95a1254eee1066fd25ff4236c..8c1a1da0eeb24ae84fd0d892880696ee86ed784f 100644
--- a/GUI/coregui/Views/TestView.cpp
+++ b/GUI/coregui/Views/TestView.cpp
@@ -181,7 +181,6 @@ void TestView::test_ba3d()
     layout->setSpacing(0);
 #ifdef BORNAGAIN_OPENGL
     RealSpaceWidget* widget = new RealSpaceWidget(m_mainWindow->sampleModel());
-    widget->setModel(m_mainWindow->sampleModel(), nullptr);
     layout->addWidget(widget);
 #endif
     setLayout(layout);