diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc
index 0d65e6d5f4a5547f1334934c8ac8d1865300fc6a..22b8353202a10953251a02f55663d3f106f49178 100644
--- a/dune/gfe/riemanniantrsolver.cc
+++ b/dune/gfe/riemanniantrsolver.cc
@@ -106,7 +106,6 @@ setup(const GridType& grid,
     mmgStep->basesolver_        = baseSolver;
     mmgStep->setSmoother(presmoother, postsmoother);
     mmgStep->obstacleRestrictor_= new MandelObstacleRestrictor<CorrectionType>();
-    mmgStep->hasObstacle_       = &hasObstacle_;
     mmgStep->verbosity_         = Solver::QUIET;
 
     // //////////////////////////////////////////////////////////////////////////////////////
@@ -226,13 +225,10 @@ setup(const GridType& grid,
 
     if (rank==0)
     {
-        hasObstacle_.resize(numLevels);
-        hasObstacle_.back().resize(guIndex_->nGlobalEntity(), true);
-
-        // If there is more than one level use the transfer operators to determine the correct coarse level system sizes
-        for (int i=0; i<hasObstacle_.size()-1; i++)
-            hasObstacle_[i].resize(dynamic_cast<TruncatedCompressedMGTransfer<CorrectionType>* >(mmgStep->mgTransfer_[i])->getMatrix().M(),true);
+        hasObstacle_.resize(guIndex_->nGlobalEntity(), true);
+        mmgStep->hasObstacle_ = &hasObstacle_;
     }
+
 }
 
 
@@ -336,7 +332,7 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve()
             mgStep->setProblem(stiffnessMatrix, corr_global, rhs_global);
 
             trustRegionObstacles.back() = trustRegion.obstacles();
-            mgStep->obstacles_ = &trustRegionObstacles;
+            mgStep->obstacles_ = &trustRegionObstacles.back();
 
             innerSolver_->preprocess();
 
diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh
index b87c29c77e26f4c26c15030959fbd8f24d76b7c2..7454702c7766514f1aa624156254563bee4ffeb9 100644
--- a/dune/gfe/riemanniantrsolver.hh
+++ b/dune/gfe/riemanniantrsolver.hh
@@ -127,9 +127,8 @@ protected:
     /** \brief The solver for the quadratic inner problems */
     std::shared_ptr<Solver> innerSolver_;
 
-    /** \brief Dummy fields containing 'true' everywhere.  The multigrid step
-        expects them :-( */
-    std::vector<Dune::BitSetVector<1> > hasObstacle_;
+    /** \brief Contains 'true' everywhere -- the trust-region is bounded */
+    Dune::BitSetVector<1> hasObstacle_;
 
     /** \brief The Dirichlet nodes */
     const Dune::BitSetVector<blocksize>* ignoreNodes_;