diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp
index 33e623feab024f4ff2cfff76ea2a61fedbbb429a..0d524b93e83507496966ad01673ba0e948bba523 100644
--- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp
+++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp
@@ -128,6 +128,8 @@ void RealSpaceCanvas::onChangeLayerSizeAction(double layerSizeChangeScale)
 void RealSpaceCanvas::onDataChanged(const QModelIndex& index)
 {
     auto item = m_sampleModel->itemForIndex(index);
+    if (!item)
+        return;
 
     if (!(item->modelType() == Constants::PropertyType
           && (item->displayName() == SessionGraphicsItem::P_XPOS
@@ -137,6 +139,9 @@ void RealSpaceCanvas::onDataChanged(const QModelIndex& index)
 
 void RealSpaceCanvas::updateScene()
 {
+    if (!m_currentSelection.isValid())
+        return;
+
     QApplication::setOverrideCursor(Qt::WaitCursor);
 
     m_realSpaceModel.reset(new RealSpaceModel);
@@ -215,6 +220,9 @@ void RealSpaceCanvas::setConnected(SampleModel* model, bool makeConnected)
                 Qt::UniqueConnection);
         connect(model, &SampleModel::modelReset, this, &RealSpaceCanvas::resetScene,
                 Qt::UniqueConnection);
+        connect(model, &SampleModel::modelAboutToBeReset, this, [&](){ m_currentSelection = QModelIndex();},
+                Qt::UniqueConnection);
+
     } else {
         disconnect(model, &SampleModel::rowsInserted, this, &RealSpaceCanvas::updateScene);
         disconnect(model, &SampleModel::rowsRemoved, this, &RealSpaceCanvas::updateScene);