diff --git a/dune/solvers/iterationsteps/blockgssteps.hh b/dune/solvers/iterationsteps/blockgssteps.hh
index 9e7f769cd2cb309950212b3c4b18b0419a0f528d..18614d87c7092deb08cc32aefd2278b12385a9d4 100644
--- a/dune/solvers/iterationsteps/blockgssteps.hh
+++ b/dune/solvers/iterationsteps/blockgssteps.hh
@@ -99,8 +99,7 @@ static constexpr double defaultCgTol = 1e-15;
 template <class MBlock, class VBlock>
 VBlock cg(const MBlock& m, VBlock r, size_t maxIter = defaultCgMaxIter,
           double tol = defaultCgTol) {
-  VBlock x;
-  x = 0;
+  VBlock x(0);
   VBlock p = r;
   auto q = r;
   auto rOldSquared = r * r;
@@ -140,11 +139,11 @@ namespace LocalSolverFromLinearSolver {
  */
 template <class LinearSolver>
 auto truncate(LinearSolver&& linearSolver) {
-  return [&, localSolver = std::move(linearSolver) ](
+  return [linearSolver = std::move(linearSolver) ](
       const auto& m, const auto& b, const auto& ignore) {
     using Return = typename std::result_of<LinearSolver(decltype(m), decltype(b))>::type;
     if (ignore.all())
-      return Return{0};
+      return Return(0);
 
     if (ignore.none())
       return linearSolver(m, b);
diff --git a/dune/solvers/test/gssteptest.cc b/dune/solvers/test/gssteptest.cc
index 89ce86973e6711fd9d552b54062a2cc7c58504b4..ca94625d6c884330bdfcf0a6e577b4661fcc462c 100644
--- a/dune/solvers/test/gssteptest.cc
+++ b/dune/solvers/test/gssteptest.cc
@@ -140,7 +140,7 @@ struct GSTestSuite {
                                               type, reg ? "regularized" : "");
           test(&gsStep1, gsString1);
           test(gsStep2Ptr.get(), gsString2);
-          diffTest(&gsStep1, gsString1, gsStep2Ptr.get(), gsString2, 1e-7);
+          diffTest(&gsStep1, gsString1, gsStep2Ptr.get(), gsString2, 1e-9);
         }
       }
     }