Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.cpp	(revision 613f8ce92dbe7aa67f0bcf2b469dc117261e6701)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.cpp	(revision 8a77aceca34c6bfc767e485022aadcae50a7ff12)
@@ -53,4 +53,5 @@
    m_objectId = -1;
    m_hovering = false;
+   m_selected = false;
    m_material = 0;
    m_hoverMaterial = 0;
@@ -69,4 +70,5 @@
    m_objectId = -1;
    m_hovering = false;
+   m_selected = false;
    m_material = 0;
    m_hoverMaterial = 0;
@@ -100,4 +102,6 @@
    if (m_hovering)
        material = m_hoverMaterial;
+   else if (m_selected)
+       material = m_selectionMaterial;
    else
        material = m_material;
@@ -119,4 +123,24 @@
    else
        m_mesh->draw(painter);
+
+   QVector3DArray array;
+   qreal radius = 0.3f;
+   array.append(-radius, -radius, -radius); array.append( radius, -radius, -radius);
+   array.append( radius, -radius, -radius); array.append( radius,  radius, -radius);
+   array.append( radius,  radius, -radius); array.append(-radius,  radius, -radius);
+   array.append(-radius,  radius, -radius); array.append(-radius, -radius, -radius);
+
+   array.append(-radius, -radius,  radius); array.append( radius, -radius,  radius);
+   array.append( radius, -radius,  radius); array.append( radius,  radius,  radius);
+   array.append( radius,  radius,  radius); array.append(-radius,  radius,  radius);
+   array.append(-radius,  radius,  radius); array.append(-radius, -radius,  radius);
+
+   array.append(-radius, -radius, -radius); array.append(-radius, -radius,  radius);
+   array.append( radius, -radius, -radius); array.append( radius, -radius,  radius);
+   array.append(-radius,  radius, -radius); array.append(-radius,  radius,  radius);
+   array.append( radius,  radius, -radius); array.append( radius,  radius,  radius);
+   painter->clearAttributes();
+   painter->setVertexAttribute(QGL::Position, array);
+   painter->draw(QGL::Lines, 24);
 
    // Turn off the user effect, if present.
@@ -166,5 +190,5 @@
 QGLMaterial* GLMoleculeObject::getMaterial(size_t no)
 {
-  ASSERT( (no >= 0) && (no < MAX_ELEMENTS),
+  ASSERT( (no >= 0) && (no < MAX_ELEMENTS) || (no == 65536),
       "GLMoleculeView::getMaterial() - Element no "+toString(no)+" is invalid.");
   if (ElementNoMaterialMap.find(no) != ElementNoMaterialMap.end()){
@@ -178,4 +202,6 @@
     if (no == 0) { // create hover material
       newmaterial->setAmbientColor( QColor(0, 128, 128) );
+    } else if (no == 65536) { // create selection material
+      newmaterial->setAmbientColor( QColor(200, 200, 200) );
     } else { // create material for element
       periodentafel *periode = World::getInstance().getPeriode();
Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.hpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.hpp	(revision 613f8ce92dbe7aa67f0bcf2b469dc117261e6701)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.hpp	(revision 8a77aceca34c6bfc767e485022aadcae50a7ff12)
@@ -60,4 +60,7 @@
    void setHoverMaterial(QGLMaterial *value) { m_hoverMaterial = value; }
 
+   QGLMaterial *selectionMaterial() const { return m_selectionMaterial; }
+   void setSelectionMaterial(QGLMaterial *value) { m_selectionMaterial = value; }
+
    QGLAbstractEffect *effect() const { return m_effect; }
    void setEffect(QGLAbstractEffect *value) { m_effect = value; }
@@ -100,4 +103,5 @@
    int m_objectId;
    bool m_hovering;
+   bool m_selected;
 };
 
Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp	(revision 613f8ce92dbe7aa67f0bcf2b469dc117261e6701)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_atom.cpp	(revision 8a77aceca34c6bfc767e485022aadcae50a7ff12)
@@ -108,4 +108,8 @@
       "GLMoleculeObject_atom::GLMoleculeObject_atom() - QGLMaterial ref from getter function for hover is NULL.");
   setHoverMaterial(hovermaterial);
+  QGLMaterial *selectionmaterial = getMaterial(65536); // 65536 is the selection material
+  ASSERT(selectionmaterial != NULL,
+      "GLMoleculeObject_atom::GLMoleculeObject_atom() - QGLMaterial ref from getter function for selection is NULL.");
+  setSelectionMaterial(selectionmaterial);
 
   // set scale
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision 613f8ce92dbe7aa67f0bcf2b469dc117261e6701)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp	(revision 8a77aceca34c6bfc767e485022aadcae50a7ff12)
@@ -205,4 +205,5 @@
 void GLWorldScene::draw(QGLPainter *painter) const
 {
+  std::cout << "scene draw\n";
    // Draw all of the mesh objects that we have as children.
    foreach (QObject *obj, children()) {
Index: src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 613f8ce92dbe7aa67f0bcf2b469dc117261e6701)
+++ src/UIElements/Views/Qt4/Qt3D/GLWorldView.cpp	(revision 8a77aceca34c6bfc767e485022aadcae50a7ff12)
@@ -48,4 +48,5 @@
   World::getInstance().signOn(this, World::AtomInserted);
   World::getInstance().signOn(this, World::AtomRemoved);
+  World::getInstance().signOn(this, World::AtomPositionChanged);
 }
 
@@ -55,4 +56,5 @@
   World::getInstance().signOff(this, World::AtomInserted);
   World::getInstance().signOff(this, World::AtomRemoved);
+  World::getInstance().signOff(this, World::AtomPositionChanged);
   delete worldscene;
 }
@@ -96,4 +98,14 @@
 #endif
       emit atomRemoved(_atom);
+      break;
+    }
+    case World::AtomPositionChanged:
+    {
+      std::cout << "view pos changed\n";
+      const atom *_atom = World::getInstance().lastChanged<atom>();
+#ifdef LOG_OBSERVER
+      observerLog().addMessage() << "++ Observer " << observerLog().getName(this) << " received notification that atom "+toString(_atom->getId())+" has changed its position.";
+#endif
+      emit changed();
       break;
     }
