diff --git a/modules/gfx/src/scene.cc b/modules/gfx/src/scene.cc
index e9025cd39f7a5f6c9b4235bf995faf77442f287b..5c1e9cbb7149115b219ceccc8e88698fa5e70e97 100644
--- a/modules/gfx/src/scene.cc
+++ b/modules/gfx/src/scene.cc
@@ -1043,7 +1043,6 @@ void Scene::Remove(const GfxNodeP& go)
   if(!go) return;
   root_node_->Remove(go);
   this->NotifyObservers(bind(&SceneObserver::NodeRemoved, _1,go));
-  std::cerr << "Scene::Remove(node):" << go.use_count() << std::endl;
 }
 
 void Scene::RemoveAll()
diff --git a/modules/gui/src/scene_win/scene_node.cc b/modules/gui/src/scene_win/scene_node.cc
index 70818d1acc3d606e3650983597f234da90bacd2d..3e99b51ccfbdcef37d0ddaeaf08bd558ac8b6c43 100644
--- a/modules/gui/src/scene_win/scene_node.cc
+++ b/modules/gui/src/scene_win/scene_node.cc
@@ -29,7 +29,7 @@ SceneNode::SceneNode(QObject* parent):QObject(parent){
   parent_ = NULL;
 }
 
-int SceneNode::GetChildRow(const SceneNode* node) const{
+int SceneNode::GetChildRow(const SceneNode* node) const {
   for(int i = 0; i < this->children().size(); i++){
     if (this->children()[i] == node)
       return i;
@@ -41,7 +41,7 @@ SceneNode::~SceneNode() {
 }
 
 int SceneNode::GetRow() const{
-  if(parent_){
+  if (parent_) {
     return parent_->GetChildRow(this);
   }
   return 0;
diff --git a/modules/gui/src/scene_win/scene_win_model.cc b/modules/gui/src/scene_win/scene_win_model.cc
index f712174f2e6135717348d9bfc1dfcb65d06fe681..4fc10d492230d54f86d6b08657955615172f399e 100644
--- a/modules/gui/src/scene_win/scene_win_model.cc
+++ b/modules/gui/src/scene_win/scene_win_model.cc
@@ -123,9 +123,11 @@ QModelIndex SceneWinModel::index(int row, int col,
 
 QModelIndex SceneWinModel::parent(const QModelIndex& index) const
 {
-  if(!index.isValid())return QModelIndex();
-
+  if(!index.isValid())
+    return QModelIndex();
   SceneNode* node = GetItem(index);
+  if (!node)
+    return QModelIndex();
   assert(node);
   SceneNode* parent_node = node->GetParent();
 
@@ -302,9 +304,8 @@ bool SceneWinModel::RemoveNode(SceneNode* node)
     QModelIndex parent_index =this->GetIndexOf(parent);
     int row = node->GetRow();
     this->beginRemoveRows(parent_index,row,row);
-    this->endRemoveRows();
-    node->setParent(NULL);
     delete node;
+    this->endRemoveRows();
     return true;
   }
   return false;