Index: src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision 3fa16b482f696edb18618700ef768e366d06813c)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision ef3013cd854f882cf600cfb78dc0c9cd4f78897b)
@@ -113,5 +113,5 @@
       moliter++) {
     // create molecule objects in scene
-    moleculeInserted(*moliter);
+    moleculeInserted((*moliter)->getId());
   }
 }
@@ -134,5 +134,5 @@
     const bool mol_present = MoleculesinSceneMap.count(molid);
     if (!mol_present)
-      moleculeInserted(*moliter);
+      moleculeInserted((*moliter)->getId());
   }
 }
@@ -260,25 +260,34 @@
  * @param _mol molecule to insert
  */
-void GLWorldScene::moleculeInserted(const molecule * _mol)
-{
-  LOG(3, "INFO: GLWorldScene: Received signal moleculeRemoved for molecule "+toString(_mol->getId())+".");
-  MoleculeNodeMap::const_iterator iter = MoleculesinSceneMap.find(_mol->getId());
+void GLWorldScene::moleculeInserted(const moleculeId_t _id)
+{
+  LOG(3, "INFO: GLWorldScene: Received signal moleculeRemoved for molecule "+toString(_id)+".");
+  MoleculeNodeMap::const_iterator iter = MoleculesinSceneMap.find(_id);
   ASSERT( iter == MoleculesinSceneMap.end(),
-      "GLWorldScene::moleculeInserted() - molecule's id "+toString(_mol->getId())+" already present.");
+      "GLWorldScene::moleculeInserted() - molecule's id "+toString(_id)+" already present.");
 
   // add new object
-  GLMoleculeObject_molecule *molObject = new GLMoleculeObject_molecule(GLMoleculeObject::meshEmpty, this, _mol);
-  MoleculesinSceneMap.insert( make_pair(_mol->getId(), molObject) );
-  connect (molObject, SIGNAL(changed()), this, SIGNAL(changed()));
-  connect (molObject, SIGNAL(changeOccured()), this, SIGNAL(changeOccured()));
-  connect (molObject, SIGNAL(atomClicked(atomId_t)), this, SLOT(atomClicked(atomId_t)));
-  connect (molObject, SIGNAL(moleculeClicked(moleculeId_t)), this, SLOT(moleculeClicked(moleculeId_t)));
-  connect (molObject, SIGNAL(changeAtomId(GLMoleculeObject_atom *, int, int)), this, SLOT(changeAtomId(GLMoleculeObject_atom *, int, int)));
-  connect (molObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
-  connect (molObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
-  connect (molObject, SIGNAL(hoverChanged(const atom &)), this, SIGNAL(hoverChanged(const atom &)));
-  connect (molObject, SIGNAL(hoverChanged(const molecule &, int)), this, SIGNAL(hoverChanged(const molecule &, int)));
-  emit changed();
-  emit changeOccured();
+  const molecule *_mol = World::getInstance().getMolecule(MoleculeById(_id));
+  if (_mol != NULL) {
+    GLMoleculeObject_molecule *molObject = new GLMoleculeObject_molecule(GLMoleculeObject::meshEmpty, this, _mol);
+    MoleculesinSceneMap.insert( make_pair(_id, molObject) );
+    connect (molObject, SIGNAL(changed()), this, SIGNAL(changed()));
+    connect (molObject, SIGNAL(changeOccured()), this, SIGNAL(changeOccured()));
+    connect (molObject, SIGNAL(atomClicked(atomId_t)), this, SLOT(atomClicked(atomId_t)));
+    connect (molObject, SIGNAL(moleculeClicked(moleculeId_t)), this, SLOT(moleculeClicked(moleculeId_t)));
+    connect (molObject, SIGNAL(changeAtomId(GLMoleculeObject_atom *, int, int)), this, SLOT(changeAtomId(GLMoleculeObject_atom *, int, int)));
+    connect (molObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
+    connect (molObject, SIGNAL(selectionChanged()), this, SIGNAL(changed()));
+    connect (molObject, SIGNAL(hoverChanged(const atom &)), this, SIGNAL(hoverChanged(const atom &)));
+    connect (molObject, SIGNAL(hoverChanged(const molecule &, int)), this, SIGNAL(hoverChanged(const molecule &, int)));
+    emit changed();
+    emit changeOccured();
+  } else {
+    // the molecule is already gone, we add it nonetheless as null object as
+    // lateron moleculeRemoved wants to erase it.
+    ELOG(1, "GLWorldScene::moleculeInserted() - added null object for not present mol id " << _id);
+    GLMoleculeObject_molecule *molObject = NULL;
+    MoleculesinSceneMap.insert( make_pair(_id, molObject) );
+  }
 }
 
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp	(revision 3fa16b482f696edb18618700ef768e366d06813c)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp	(revision ef3013cd854f882cf600cfb78dc0c9cd4f78897b)
@@ -84,5 +84,5 @@
   void moleculeClicked(moleculeId_t no);
   void moleculeRemoved(const moleculeId_t _id);
-  void moleculeInserted(const molecule * _mol);
+  void moleculeInserted(const moleculeId_t _id);
   void worldSelectionChanged();
   void bondInserted(const bond::ptr _bond, const GLMoleculeObject_bond::SideOfBond side);
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 3fa16b482f696edb18618700ef768e366d06813c)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision ef3013cd854f882cf600cfb78dc0c9cd4f78897b)
@@ -91,5 +91,5 @@
   connect(this, SIGNAL(worldSelectionChanged()), worldscene, SLOT(worldSelectionChanged()));
   connect(this, SIGNAL(moleculeRemoved(const moleculeId_t)), worldscene, SLOT(moleculeRemoved(const moleculeId_t)));
-  connect(this, SIGNAL(moleculeInserted(const molecule *)), worldscene, SLOT(moleculeInserted(const molecule *)));
+  connect(this, SIGNAL(moleculeInserted(const moleculeId_t)), worldscene, SLOT(moleculeInserted(const moleculeId_t)));
   //connect(this, SIGNAL(changed()), this, SLOT(updateGL()));
   connect(this, SIGNAL(changed()), this, SLOT(sceneChangeSignalled()));
@@ -348,9 +348,9 @@
       case World::MoleculeInserted:
       {
-        const molecule * _mol = World::getInstance().lastChanged<molecule>();
+        const moleculeId_t _id = World::getInstance().lastChanged<molecule>()->getId();
   #ifdef LOG_OBSERVER
-        observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that molecule "+toString(_mol->getId())+" has been removed.";
+        observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that molecule "+toString(_id)+" has been removed.";
   #endif
-        emit moleculeInserted(_mol);
+        emit moleculeInserted(_id);
         break;
       }
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp	(revision 3fa16b482f696edb18618700ef768e366d06813c)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp	(revision ef3013cd854f882cf600cfb78dc0c9cd4f78897b)
@@ -59,5 +59,5 @@
   void changed();
   void TimeChanged();
-  void moleculeInserted(const molecule * _mol);
+  void moleculeInserted(const moleculeId_t _id);
   void moleculeRemoved(const moleculeId_t _id);
   void worldSelectionChanged();
