diff --git a/dune/solvers/iterationsteps/multigridstep.cc b/dune/solvers/iterationsteps/multigridstep.cc
index 57f8f43410181fc0a21e0e1c30e1550987dc0e36..da97e31e6893a310a9e9d7c835b71eb19cbd31d0 100644
--- a/dune/solvers/iterationsteps/multigridstep.cc
+++ b/dune/solvers/iterationsteps/multigridstep.cc
@@ -8,6 +8,7 @@
 #include <dune/solvers/solvers/linearsolver.hh>
 #include <dune/solvers/common/genericvectortools.hh>
 #include <dune/matrix-vector/genericvectortools.hh>
+#include <dune/matrix-vector/resize.hh>
 
 //template<class MatrixType, class VectorType, class BitVectorType>
 //inline
@@ -118,7 +119,7 @@ void MultigridStep<MatrixType, VectorType, BitVectorType>::preprocess()
         this->mgTransfer_[i]->galerkinRestrict(*this->matrixHierarchy_[i+1], *std::const_pointer_cast<MatrixType>(this->matrixHierarchy_[i]));
 
         // Set solution vector sizes for the lower levels
-        GenericVector::resize(*(this->xHierarchy_[i]),*this->matrixHierarchy_[i]);
+        MatrixVector::resize(*(this->xHierarchy_[i]),*this->matrixHierarchy_[i]);
     }
 
     // /////////////////////////////////////////////////////
diff --git a/dune/solvers/test/multigridtest.cc b/dune/solvers/test/multigridtest.cc
index be4eb374f8c855f780218e8856613f0c12311816..d387649ef0b828b09dacb934eb5595ae7475bbde 100644
--- a/dune/solvers/test/multigridtest.cc
+++ b/dune/solvers/test/multigridtest.cc
@@ -55,14 +55,10 @@ struct MultigridTestSuite
         typedef MultigridTransfer<Vector, BitVector, Matrix> Transfer;
         typedef CompressedMultigridTransfer<Vector, BitVector, Matrix> TransferImplementation;
 
-        // we need a vector of pointers to the transfer operator base class
-        std::vector<Transfer*> transfer(grid.maxLevel());
-        for (size_t i = 0; i < transfer.size(); ++i)
-        {
-            // create transfer operator from level i to i+1 (note that this will only work for either uniformly refined grids or adaptive grids with RefinementType=COPY)
-            TransferImplementation* t = new TransferImplementation;
-            t->setup(grid, i, i+1);
-            transfer[i] = t;
+        // create transfer operators from level i to i+1 (note that this will only work for either uniformly refined grids or adaptive grids with RefinementType=COPY)
+        std::vector<Transfer> transfer(grid.maxLevel());
+        for (size_t i = 0; i < transfer.size(); ++i) {
+            transfer[i].setup(grid, i, i+1);
         }
 
         // set up smoothers and basesolver