Index: src/Actions/FillAction/FillRegularGridAction.cpp
===================================================================
--- src/Actions/FillAction/FillRegularGridAction.cpp	(revision f06cbbd0ffb9f2476a37d5af669cdc32dd308a69)
+++ src/Actions/FillAction/FillRegularGridAction.cpp	(revision aeb694227d3848882de4976f319b2eb7e6297cc4)
@@ -140,8 +140,8 @@
     {
       Filler *fillerFunction = new Filler(*mesh, Andpredicate, *inserter);
-      // TODO: When molecule::getBoundingShape() does not use a sphere anymore,
+      // TODO: When molecule::getBoundingSphere() does not use a sphere anymore,
       // we need to check whether we rotate the molecule randomly. For this to
       // work we need a sphere!
-      const Shape s = filler->getBoundingShape(params.RandAtomDisplacement.get());
+      const Shape s = filler->getBoundingSphere(params.RandAtomDisplacement.get());
       ClusterInterface::Cluster_impl cluster( new Cluster(filler->getAtomIds(), s) );
       CopyAtoms_withBonds copyMethod;
Index: src/Actions/FillAction/FillSurfaceAction.cpp
===================================================================
--- src/Actions/FillAction/FillSurfaceAction.cpp	(revision f06cbbd0ffb9f2476a37d5af669cdc32dd308a69)
+++ src/Actions/FillAction/FillSurfaceAction.cpp	(revision aeb694227d3848882de4976f319b2eb7e6297cc4)
@@ -125,5 +125,5 @@
     {
       Filler *fillerFunction = new Filler(*mesh, *voidnode_predicate, *inserter);
-      ClusterInterface::Cluster_impl cluster( new Cluster( filler->getAtomIds(), filler->getBoundingShape() ) );
+      ClusterInterface::Cluster_impl cluster( new Cluster( filler->getAtomIds(), filler->getBoundingSphere() ) );
       CopyAtoms_withBonds copyMethod;
       Filler::ClusterVector_t ClonedClusters;
Index: src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.cpp
===================================================================
--- src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.cpp	(revision f06cbbd0ffb9f2476a37d5af669cdc32dd308a69)
+++ src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.cpp	(revision aeb694227d3848882de4976f319b2eb7e6297cc4)
@@ -82,5 +82,5 @@
 void GLMoleculeObject_molecule::updateBoundingBox()
 {
-  Shape shape = _molecule->getBoundingShape();
+  Shape shape = _molecule->getBoundingSphere();
   Vector v = shape.getCenter();
   setPosition(QVector3D(v[0], v[1], v[2]));
Index: src/molecule.cpp
===================================================================
--- src/molecule.cpp	(revision f06cbbd0ffb9f2476a37d5af669cdc32dd308a69)
+++ src/molecule.cpp	(revision aeb694227d3848882de4976f319b2eb7e6297cc4)
@@ -958,5 +958,23 @@
 }
 
-Shape molecule::getBoundingShape(const double boundary) const
+Shape molecule::getBoundingShape(const double scale) const
+{
+  // create Sphere around every atom
+  if (empty())
+    return Nowhere();
+  const_iterator iter = begin();
+  const Vector center = (*iter)->getPosition();
+  const double vdWRadius = (*iter)->getElement().getVanDerWaalsRadius();
+  Shape BoundingShape = Sphere(center, vdWRadius*scale);
+  for(++iter; iter != end(); ++iter) {
+    const Vector center = (*iter)->getPosition();
+    const double vdWRadius = (*iter)->getElement().getVanDerWaalsRadius();
+    if (vdWRadius*scale != 0.)
+      BoundingShape = Sphere(center, vdWRadius*scale) || BoundingShape;
+  }
+  return BoundingShape;
+}
+
+Shape molecule::getBoundingSphere(const double boundary) const
 {
   // get center and radius
Index: src/molecule.hpp
===================================================================
--- src/molecule.hpp	(revision f06cbbd0ffb9f2476a37d5af669cdc32dd308a69)
+++ src/molecule.hpp	(revision aeb694227d3848882de4976f319b2eb7e6297cc4)
@@ -244,5 +244,11 @@
    *        and the shape's surface)
    */
-  Shape getBoundingShape(const double boundary = 0.) const;
+  Shape getBoundingSphere(const double boundary = 0.) const;
+
+  /** Creates the bounding box by adding van der Waals-Spheres around every atom.
+   *
+   * \param scale extra scale parameter to enlarge the spheres artifically
+   */
+  Shape getBoundingShape(const double scale = 1.) const;
 
   /// remove atoms from molecule.
Index: src/unittests/MoleculeUnitTest.cpp
===================================================================
--- src/unittests/MoleculeUnitTest.cpp	(revision f06cbbd0ffb9f2476a37d5af669cdc32dd308a69)
+++ src/unittests/MoleculeUnitTest.cpp	(revision aeb694227d3848882de4976f319b2eb7e6297cc4)
@@ -80,4 +80,55 @@
 }
 
+/** Unit test for molecule::getBoundingSphere() with a linear chain
+ *
+ */
+void MoleculeUnittest::getBoundingSphereTest_linearchain()
+{
+  // prepare a chain of atoms
+  double offset = 0.;
+  BOOST_FOREACH(atom *_atom, atomVector) {
+    _atom->setPosition( Vector(offset, 0., 0.) );
+    offset += 1.;
+  }
+
+  {
+    // get bounding shape
+    Shape s = mol->getBoundingSphere();
+
+    // check that each atom is truely inside the shape
+    BOOST_FOREACH(atom *_atom, atomVector) {
+      CPPUNIT_ASSERT( s.isInside(_atom->getPosition()) );
+    }
+  }
+}
+
+/** Unit test for molecule::getBoundingSphere() with a v-shaped molecule.
+ *
+ */
+void MoleculeUnittest::getBoundingSphereTest_vshaped()
+{
+  double xoffset = -2.5;
+  double yoffset = -2.5;
+  double yadder = -1;
+  BOOST_FOREACH(atom *_atom, atomVector) {
+    _atom->setPosition( Vector(xoffset, yoffset, 0.) );
+    xoffset += 1.;
+    yoffset -= yadder;
+    if (yoffset <= 0) {
+      yadder = 1.;
+    }
+  }
+
+  {
+    // get bounding shape
+    Shape s = mol->getBoundingSphere();
+
+    // check that each atom is truely inside the shape
+    BOOST_FOREACH(atom *_atom, atomVector) {
+      CPPUNIT_ASSERT( s.isInside(_atom->getPosition()) );
+    }
+  }
+}
+
 /** Unit test for molecule::getBoundingShape() with a linear chain
  *
Index: src/unittests/MoleculeUnitTest.hpp
===================================================================
--- src/unittests/MoleculeUnitTest.hpp	(revision f06cbbd0ffb9f2476a37d5af669cdc32dd308a69)
+++ src/unittests/MoleculeUnitTest.hpp	(revision aeb694227d3848882de4976f319b2eb7e6297cc4)
@@ -25,4 +25,6 @@
 {
   CPPUNIT_TEST_SUITE( MoleculeUnittest );
+  CPPUNIT_TEST ( getBoundingSphereTest_linearchain );
+  CPPUNIT_TEST ( getBoundingSphereTest_vshaped );
   CPPUNIT_TEST ( getBoundingShapeTest_linearchain );
   CPPUNIT_TEST ( getBoundingShapeTest_vshaped );
@@ -33,4 +35,6 @@
   void tearDown();
 
+  void getBoundingSphereTest_linearchain();
+  void getBoundingSphereTest_vshaped();
   void getBoundingShapeTest_linearchain();
   void getBoundingShapeTest_vshaped();
