diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc
index e6223d01fbf1a607519df0f760281e361ed7cb03..0d65e6d5f4a5547f1334934c8ac8d1865300fc6a 100644
--- a/dune/gfe/riemanniantrsolver.cc
+++ b/dune/gfe/riemanniantrsolver.cc
@@ -118,13 +118,17 @@ setup(const GridType& grid,
 
     LaplaceAssembler<GridType, typename BasisType::LocalFiniteElement, typename BasisType::LocalFiniteElement> laplaceStiffness;
     typedef Dune::BCRSMatrix<Dune::FieldMatrix<double,1,1> > ScalarMatrixType;
-    ScalarMatrixType* A = new ScalarMatrixType;
+    ScalarMatrixType localA;
 
-    operatorAssembler.assemble(laplaceStiffness, *A);
+    operatorAssembler.assemble(laplaceStiffness, localA);
 
     if (h1SemiNorm_)
         delete h1SemiNorm_;
 
+
+    MatrixCommunicator<GUIndex, ScalarMatrixType> matrixComm(*guIndex_, 0);
+    ScalarMatrixType* A = new ScalarMatrixType(matrixComm.reduceAdd(localA));
+
     h1SemiNorm_ = new H1SemiNorm<CorrectionType>(*A);
 
     innerSolver_ = std::shared_ptr<LoopSolver<CorrectionType> >(new ::LoopSolver<CorrectionType>(mmgStep,