diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc
index 130704e6e65e80ec93aea7a5778970cd1f02a07e..532b0361b46e87267ec6f36490f9293f18285f69 100644
--- a/dune/gfe/riemanniantrsolver.cc
+++ b/dune/gfe/riemanniantrsolver.cc
@@ -250,9 +250,7 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve()
 
     MaxNormTrustRegion<blocksize> trustRegion(guIndex_->nGlobalEntity(), initialTrustRegionRadius_);
 
-    std::vector<std::vector<BoxConstraint<field_type,blocksize> > > trustRegionObstacles((mgStep)
-                                                                                         ? mgStep->numLevels()
-                                                                                         : 0);
+    std::vector<BoxConstraint<field_type,blocksize> > trustRegionObstacles;
 
    // /////////////////////////////////////////////////////
     //   Set up the log file, if requested
@@ -331,8 +329,8 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve()
         {
             mgStep->setProblem(stiffnessMatrix, corr_global, rhs_global);
 
-            trustRegionObstacles.back() = trustRegion.obstacles();
-            mgStep->obstacles_ = &trustRegionObstacles.back();
+            trustRegionObstacles = trustRegion.obstacles();
+            mgStep->obstacles_ = &trustRegionObstacles;
 
             innerSolver_->preprocess();