diff --git a/dune/matrix-vector/triangularsolve.hh b/dune/matrix-vector/triangularsolve.hh
index 76bd1334cd378ed2dbdd73efcd4f727bff245327..e21426ba0d5d4698832297c0ac3868ca757a74d1 100644
--- a/dune/matrix-vector/triangularsolve.hh
+++ b/dune/matrix-vector/triangularsolve.hh
@@ -10,7 +10,18 @@ namespace MatrixVector {
     x = 0;
     Vector r = b;
     if (transpose) {
-      // TODO: not yet handled
+      for (auto it = A.begin(); it != A.end(); ++it) {
+        const size_t i = it.index();
+        if (ignore != nullptr and (*ignore)[i].all())
+          continue;
+        auto cIt = it->begin();
+        assert(cIt.index() == it.index());
+        x[i] = r[i] / *cIt;
+        for (; cIt != it->end(); ++cIt) {
+          const size_t j = cIt.index();
+          r[j] -= x[i] * *cIt;
+        }
+      }
     } else {
       for (auto it = A.begin(); it != A.end(); ++it) {
         size_t i = it.index();