diff --git a/dune/solvers/iterationsteps/multigridstep.hh b/dune/solvers/iterationsteps/multigridstep.hh
index 344063aa390794726dc08f86b189b572ff1f580b..c4ce011e1dbd6e1337e1c2b2974a8bc4de5a9940 100644
--- a/dune/solvers/iterationsteps/multigridstep.hh
+++ b/dune/solvers/iterationsteps/multigridstep.hh
@@ -123,7 +123,7 @@ namespace Dune {
         {
             mgTransfer_.resize(transfer.size());
             for(size_t j=0; j<transfer.size(); ++j)
-                mgTransfer_[j] = Dune::stackobject_to_shared_ptr(transfer[j]);
+                mgTransfer_[j] = Dune::stackobject_to_shared_ptr(*const_cast<DerivedTransfer*>(&transfer[j]));
         }
 
         virtual void iterate();