diff --git a/dune/vtk/datacollectorinterface.impl.hh b/dune/vtk/datacollectorinterface.impl.hh
index d146cb1fa0c888776b6d63643eb2149845fd688b..abf5e6ad9fbc3fbd3a67f43f316689a9741ad940 100644
--- a/dune/vtk/datacollectorinterface.impl.hh
+++ b/dune/vtk/datacollectorinterface.impl.hh
@@ -2,6 +2,7 @@
 
 #include <dune/geometry/referenceelements.hh>
 #include <dune/grid/common/gridenums.hh>
+#include <dune/grid/common/mcmgmapper.hh>
 
 namespace Dune {
 
@@ -11,12 +12,12 @@ std::vector<T> DataCollectorInterface<GridView, Derived>
   ::cellDataImpl (VtkFunction const& fct) const
 {
   std::vector<T> data(gridView_.size(0) * fct.ncomps());
-  auto const& indexSet = gridView_.indexSet();
+  MultipleCodimMultipleGeomTypeMapper<GridView> mapper(gridView_, mcmgElementLayout());
   auto localFct = localFunction(fct);
   for (auto const& e : elements(gridView_, Partitions::all)) {
     localFct.bind(e);
     auto refElem = referenceElement<T,GridView::dimension>(e.type());
-    std::size_t idx = fct.ncomps() * indexSet.index(e);
+    std::size_t idx = fct.ncomps() * mapper.index(e);
     for (int comp = 0; comp < fct.ncomps(); ++comp)
       data[idx + comp] = T(localFct.evaluate(comp, refElem.position(0,0)));
     localFct.unbind();