diff --git a/dune/solvers/transferoperators/genericmultigridtransfer.hh b/dune/solvers/transferoperators/genericmultigridtransfer.hh
index 8e7a2a300334970bf8b47de90eb8112c1bfef277..988976638daf42ab4e6777dfe53f640caa4cda4a 100644
--- a/dune/solvers/transferoperators/genericmultigridtransfer.hh
+++ b/dune/solvers/transferoperators/genericmultigridtransfer.hh
@@ -78,11 +78,6 @@ public:
         int rows = grid.size(fL, dim);
         int cols = grid.size(cL, dim);
 
-        // Make identity matrix
-        TransferMatrixBlock identity(0);
-        for (size_t i=0; i<identity.N(); i++)
-            identity[i][i] = 1;
-
         // A factory for the shape functions
         typedef typename Dune::PQkLocalFiniteElementCache<ctype, field_type, dim, 1> P1FECache;
         typedef typename P1FECache::FiniteElementType FEType;
@@ -217,9 +212,7 @@ public:
                             const Dune::LocalKey& iLocalKey = coarseBaseSet.localCoefficients().localKey(i);
                             int globalCoarse = coarseIndexSet.subIndex(*cIt, iLocalKey.subEntity(), iLocalKey.codim());
 
-                            TransferMatrixBlock matValue = identity;
-                            matValue *= values[i];
-                            matrix[globalFine][globalCoarse] = matValue;
+                            matrix[globalFine][globalCoarse] = Dune::ScaledIdentityMatrix<ctype,TransferMatrixBlock::rows>(values[i]);
                         }
                     }
                 }