diff --git a/dune/matrix-vector/triangularsolve.hh b/dune/matrix-vector/triangularsolve.hh
index e41f362f71a9c41aa9f18059877ef4bc677e8da3..4d7c42e8a42969ddfb86e9e82ab6928c87473a86 100644
--- a/dune/matrix-vector/triangularsolve.hh
+++ b/dune/matrix-vector/triangularsolve.hh
@@ -66,7 +66,8 @@ namespace MatrixVector {
   static Vector lowerTriangularSolve(Matrix const& L, Vector b,
                                      BitVector const* ignore,
                                      bool transpose = false) {
-    Vector x = 0;
+    Vector x = b;
+    x = 0;
     lowerTriangularSolve(L, std::move(b), x, ignore, transpose);
     return x;
   }
@@ -120,7 +121,8 @@ namespace MatrixVector {
   static Vector upperTriangularSolve(Matrix const& U, Vector b,
                                      BitVector const* ignore,
                                      bool transpose = false) {
-    Vector x = 0;
+    Vector x = b;
+    x = 0;
     upperTriangularSolve(U, std::move(b), x, ignore, transpose);
     return x;
   }