Index: src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision 27888fd60fedb9daf1311f4503c4ecb04ae30759)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision 426c84a415b29a155261d7224c8f698650cc6903)
@@ -167,14 +167,16 @@
 /** Removes an atom from the scene.
  *
- * @param _atom atom to remove
- */
-void GLWorldScene::atomRemoved(const atom *_atom)
-{
-  LOG(3, "INFO: GLWorldScene: Received signal atomRemoved for atom "+toString(_atom->getId())+".");
+ * We just the id as the atom might have already been destroyed.
+ *
+ * @param _id id of atom to remove
+ */
+void GLWorldScene::atomRemoved(const atomicNumber_t _id)
+{
+  LOG(3, "INFO: GLWorldScene: Received signal atomRemoved for atom "+toString(_id)+".");
   // bonds are removed by signal coming from ~bond
   // remove atoms
-  AtomNodeMap::iterator iter = AtomsinSceneMap.find(_atom->getId());
+  AtomNodeMap::iterator iter = AtomsinSceneMap.find(_id);
   ASSERT(iter != AtomsinSceneMap.end(),
-      "GLWorldScene::atomRemoved() - atom "+_atom->getName()+" not on display.");
+      "GLWorldScene::atomRemoved() - atom "+toString(_id)+" not on display.");
   GLMoleculeObject_atom *atomObject = iter->second;
   atomObject->disconnect();
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp	(revision 27888fd60fedb9daf1311f4503c4ecb04ae30759)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp	(revision 426c84a415b29a155261d7224c8f698650cc6903)
@@ -79,5 +79,5 @@
   void atomClicked(atomId_t no);
   void atomInserted(const atom *_atom);
-  void atomRemoved(const atom *_atom);
+  void atomRemoved(const atomicNumber_t _id);
   void moleculeRemoved(const molecule *_molecule);
   void worldSelectionChanged();
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 27888fd60fedb9daf1311f4503c4ecb04ae30759)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 426c84a415b29a155261d7224c8f698650cc6903)
@@ -78,9 +78,11 @@
   //changeMaterials(false);
 
+  qRegisterMetaType<atomicNumber_t>("atomicNumber_t");
+
   connect(worldscene, SIGNAL(changeOccured()), this, SLOT(changeSignalled()));
   connect(worldscene, SIGNAL(changed()), this, SIGNAL(changed()));
   connect(worldscene, SIGNAL(hoverChanged(const atom *)), this, SLOT(sceneHoverSignalled(const atom *)));
   connect(this, SIGNAL(atomInserted(const atom *)), worldscene, SLOT(atomInserted(const atom *)));
-  connect(this, SIGNAL(atomRemoved(const atom *)), worldscene, SLOT(atomRemoved(const atom *)));
+  connect(this, SIGNAL(atomRemoved(const atomicNumber_t)), worldscene, SLOT(atomRemoved(const atomicNumber_t)));
   connect(this, SIGNAL(worldSelectionChanged()), worldscene, SLOT(worldSelectionChanged()));
   connect(this, SIGNAL(moleculeRemoved(const molecule *)), worldscene, SLOT(moleculeRemoved(const molecule *)));
@@ -323,9 +325,9 @@
       case World::AtomRemoved:
       {
-        const atom *_atom = World::getInstance().lastChanged<atom>();
+        const atomicNumber_t _id = World::getInstance().lastChanged<atom>()->getId();
   #ifdef LOG_OBSERVER
         observerLog().addMessage() << "++ Observer " << observerLog().getName(static_cast<Observer *>(this)) << " received notification that atom "+toString(_atom->getId())+" has been removed.";
   #endif
-        emit atomRemoved(_atom);
+        emit atomRemoved(_id);
         break;
       }
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp	(revision 27888fd60fedb9daf1311f4503c4ecb04ae30759)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp	(revision 426c84a415b29a155261d7224c8f698650cc6903)
@@ -56,5 +56,5 @@
   void changed();
   void atomInserted(const atom *_atom);
-  void atomRemoved(const atom *_atom);
+  void atomRemoved(const atomicNumber_t _id);
   void moleculeInserted(const molecule *_molecule);
   void moleculeRemoved(const molecule *_molecule);
