diff --git a/dumux/common/geometry/intersectingentities.hh b/dumux/common/geometry/intersectingentities.hh
index 6cf916c02bc5f0b710b84f7c133ac86dda853fd7..c82558f20ba22911805f7adb9620a2f3cac0f404 100644
--- a/dumux/common/geometry/intersectingentities.hh
+++ b/dumux/common/geometry/intersectingentities.hh
@@ -73,8 +73,9 @@ intersectingEntityCartesian(const Dune::FieldVector<ctype, dimworld>& point,
         min[2] - eps2 <= point[2] && point[2] <= max[2] + eps2)
     {
         auto ijk = point-min;
+        using std::min; using std::max;
         for (int i = 0; i < dimworld; ++i)
-            ijk[i] = std::floor(ijk[i]*cells[i]/dist[i]);
+            ijk[i] = max(min(std::floor(ijk[i]*cells[i]/dist[i]), cells[i]-1), 0.0);
 
         return std::make_pair(true, (unsigned int)(cells[1]*cells[0]*int(ijk[2]) + cells[0]*int(ijk[1]) + int(ijk[0])));
     }