diff --git a/VirtualRobot/BoundingBox.cpp b/VirtualRobot/BoundingBox.cpp
index 22ab5040dd1a52a74de5db63d27d1ecc917ae23a..515196fc989ba66d09f85a83257d75d0897c3b5b 100644
--- a/VirtualRobot/BoundingBox.cpp
+++ b/VirtualRobot/BoundingBox.cpp
@@ -5,7 +5,7 @@ namespace VirtualRobot
 
     BoundingBox::BoundingBox()
     {
-        min = max = Eigen::Vector3f::Zero();
+        clear();
     }
 
     bool BoundingBox::planeGoesThrough(const MathTools::Plane& p)
@@ -38,12 +38,10 @@ namespace VirtualRobot
     {
         if (p.size() == 0)
         {
-            min = max = Eigen::Vector3f::Zero();
+            clear();
         }
         else
         {
-            min = p[0];
-            max = p[0];
             addPoints(p);
         }
     }
@@ -80,7 +78,7 @@ namespace VirtualRobot
         for (size_t i = 0; i < p.size(); i++)
         {
             addPoint(p[i]);
-        }
+        }q
     }
 
     void BoundingBox::addPoints(const BoundingBox& bbox)
@@ -93,12 +91,12 @@ namespace VirtualRobot
     {
         for (int j = 0; j < 3; j++)
         {
-            if (p(j) < min(j))
+            if (std::isnan(min(j)) || p(j) < min(j))
             {
                 min(j) = p(j);
             }
 
-            if (p(j) > max(j))
+            if (std::isnan(max(j)) || p(j) > max(j))
             {
                 max(j) = p(j);
             }
@@ -118,12 +116,22 @@ namespace VirtualRobot
 
     void BoundingBox::clear()
     {
-        min.setZero();
-        max.setZero();
+        min(0) = NAN;
+        min(1) = NAN;
+        min(2) = NAN;
+        max(0) = NAN;
+        max(1) = NAN;
+        max(2) = NAN;
     }
 
     void BoundingBox::transform(Eigen::Matrix4f& pose)
     {
+        if (std::isnan(min(0)) || std::isnan(min(1)) || std::isnan(min(2)) ||
+                std::isnan(max(0)) || std::isnan(max(1)) || std::isnan(max(2)))
+        {
+            return;
+        }
+
         Eigen::Vector3f result[8];
         std::vector<Eigen::Vector3f> result3;
         result[0] << min(0), min(1), min(2);
@@ -167,6 +175,12 @@ namespace VirtualRobot
 
     void BoundingBox::scale(Eigen::Vector3f& scaleFactor)
     {
+        if (std::isnan(min(0)) || std::isnan(min(1)) || std::isnan(min(2)) ||
+                std::isnan(max(0)) || std::isnan(max(1)) || std::isnan(max(2)))
+        {
+            return;
+        }
+
         for (int i = 0; i < 3; i++)
         {
             min(i) *= scaleFactor(i);
diff --git a/VirtualRobot/BoundingBox.h b/VirtualRobot/BoundingBox.h
index 9a7e1668dd6435225d9cc60c8ba3d62457f556bf..84109cfd30c9d186de2d5a9b814fba447b43b14e 100644
--- a/VirtualRobot/BoundingBox.h
+++ b/VirtualRobot/BoundingBox.h
@@ -81,7 +81,7 @@ namespace VirtualRobot
         //! The axis oriented maximum value
         Eigen::Vector3f getMax() const;
 
-        //! set min/max to zero.
+        //! set min/max to NAN.
         void clear();
 
         /*!