diff --git a/dune/gfe/parallel/matrixcommunicator.hh b/dune/gfe/parallel/matrixcommunicator.hh
index 90293bf11fc6d8cce3a4c8970893dfbf90be9268..f73b4c14adb12556d9b6e7d0af3f3bdd5d2743cb 100644
--- a/dune/gfe/parallel/matrixcommunicator.hh
+++ b/dune/gfe/parallel/matrixcommunicator.hh
@@ -128,13 +128,15 @@ private:
       for (int codim = 0; codim <= GridView::dimension; codim++)
         for (size_t i=0; i<it->subEntities(codim); i++)
         {
-          typename GUIndex::Index localIdx = localMapper1_.map(*it,i,codim);
-          typename GUIndex::Index globalIdx = guIndex1_.subIndex(*it,i,codim);
-          localToGlobal1_[localIdx] = globalIdx;
-
-          localIdx = localMapper2_.map(*it,i,codim);
-          globalIdx = guIndex2_.subIndex(*it,i,codim);
-          localToGlobal2_[localIdx] = globalIdx;
+          typename GUIndex::Index localIdx;
+          typename GUIndex::Index globalIdx;
+          if (localMapper1_.contains(*it,i,codim,localIdx)
+              and guIndex1_.contains(*it,i,codim,globalIdx))
+            localToGlobal1_[localIdx] = globalIdx;
+
+          if (localMapper2_.contains(*it,i,codim,localIdx)
+              and guIndex2_.contains(*it,i,codim,globalIdx))
+            localToGlobal2_[localIdx] = globalIdx;
         }