diff --git a/.gitsuper b/.gitsuper
index 9a91e17ba7af47b51e9e1dc0c3662d91787d7c0a..489a9bd9d377076668e92f3485f6f6a32d7b74b0 100644
--- a/.gitsuper
+++ b/.gitsuper
@@ -4,7 +4,7 @@ status = 1a3bcab04b011a5d6e44f9983cae6ff89fa695e8 bin (heads/master)
 	 20a673b9dad7e2e25bd97defa8849debb59d247c config.opts (heads/master)
 	 8f2c5aba441417bf2c42f22272f538c68a89cc4a dune-alugrid (remotes/origin/releases/2.5)
 	 707acf201d5a754c80f87cc4d71aa36bf29a6e3f dune-common (v2.5.1-9-g707acf20)
-	+b970966098de3d96005a3a09cdfd3ca8c5874d26 dune-gdt (heads/entropy_flux_even_newer)
+	+220000063ba57d0eb09b08bb65bb1568db51fab8 dune-gdt (heads/entropy_flux_even_newer)
 	 390a2c503783bbed778a8ff610f8c5ca09c238d0 dune-geometry (v2.5.1-5-g390a2c5)
 	 d7b20bbc5f6fdcfc312beb0ea5d16d39ea26904e dune-grid (v2.5.1-2-gd7b20bbc5)
 	 9e29a333e8af02382d80b95335a784d5ce1ea2c8 dune-grid-glue (v2.4.0-70-g9e29a33)
@@ -14,13 +14,13 @@ status = 1a3bcab04b011a5d6e44f9983cae6ff89fa695e8 bin (heads/master)
 	 741e4f8e53bdd3e1b6e19d84eb22b6e3dc48526c dune-python (remotes/origin/releases/2.5)
 	 26cc8cb4161a3a51002ab2a81b8c81d2c951ee79 dune-testtools (remotes/origin/p/renemilk/testname_listing_hack_no-skiptest)
 	 0a74e7dd0b2115778a5d490dab08a2ed07fcaa1e dune-uggrid (v2.5.2)
-	+84d7fed4cae2675c20a76a0e308045d85ffcc631 dune-xt-common (heads/dailywork_tleibner)
+	+34143b6643c0f00047078960b381e6930052b88b dune-xt-common (heads/dailywork_tleibner)
 	 f93419066883a68c4e0ba96acc3d451ba971876a dune-xt-data (heads/dailywork_tleibner)
 	 83b29cbe84d0af6579d6904f59598ad3dd132996 dune-xt-functions (heads/dailywork_tleibner)
-	 9432a18b5de2931e06bf1b4eeefa8de1d1820c0f dune-xt-grid (heads/dailywork_tleibner)
-	+56560803b72ec06517042e49200c78fb54b35922 dune-xt-la (heads/remove_cow)
+	 d4d2b463a75b557fdec45069c1f43b20b40b6265 dune-xt-grid (heads/master)
+	+ee7bf176dc4c1556270c1e35670d1e29379996b4 dune-xt-la (heads/remove_cow)
 	 09d0378f616b94d68bcdd9fc6114813181849ec0 scripts (heads/master)
-commit = 2967bdedc638aa2ba19ebfcaf4dd5735758aeba0
+commit = ef28eca2f8b5ee893dfb81411fd26750a99248c8
 
 [submodule.bin]
 remote = git@github.com:dune-community/local-bin.git
@@ -45,7 +45,7 @@ commit = 707acf201d5a754c80f87cc4d71aa36bf29a6e3f
 [submodule.dune-gdt]
 remote = git@github.com:dune-community/dune-gdt.git
 status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master)
-commit = b970966098de3d96005a3a09cdfd3ca8c5874d26
+commit = 220000063ba57d0eb09b08bb65bb1568db51fab8
 
 [submodule.dune-geometry]
 remote = git@github.com:dune-community/dune-geometry.git
@@ -95,7 +95,7 @@ commit = 0a74e7dd0b2115778a5d490dab08a2ed07fcaa1e
 [submodule.dune-xt-common]
 remote = git@github.com:dune-community/dune-xt-common.git
 status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master)
-commit = 84d7fed4cae2675c20a76a0e308045d85ffcc631
+commit = 34143b6643c0f00047078960b381e6930052b88b
 
 [submodule.dune-xt-data]
 remote = git@github.com:dune-community/dune-xt-data
@@ -110,12 +110,12 @@ commit = 83b29cbe84d0af6579d6904f59598ad3dd132996
 [submodule.dune-xt-grid]
 remote = git@github.com:dune-community/dune-xt-grid.git
 status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master)
-commit = 9432a18b5de2931e06bf1b4eeefa8de1d1820c0f
+commit = d4d2b463a75b557fdec45069c1f43b20b40b6265
 
 [submodule.dune-xt-la]
 remote = git@github.com:dune-community/dune-xt-la.git
 status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master)
-commit = 56560803b72ec06517042e49200c78fb54b35922
+commit = ee7bf176dc4c1556270c1e35670d1e29379996b4
 
 [submodule.scripts]
 remote = https://github.com/wwu-numerik/scripts.git
diff --git a/dune/xt/la/container/common/matrix/dense.hh b/dune/xt/la/container/common/matrix/dense.hh
index 9341e58258141db4bdd62e214ec87d753caa4305..897881c5304c9d1e119d008a8625df7c6b1b89f4 100644
--- a/dune/xt/la/container/common/matrix/dense.hh
+++ b/dune/xt/la/container/common/matrix/dense.hh
@@ -15,6 +15,7 @@
 #include <cmath>
 #include <memory>
 #include <mutex>
+#include <numeric>
 #include <vector>
 
 #include <boost/align/aligned_allocator.hpp>
@@ -135,7 +136,7 @@ class CommonDenseMatrixTraits : public MatrixTraitsBase<ScalarImp,
 
 
 /**
- *  \brief  A dense matrix implementation of MatrixInterface using the a std::vector backend.
+ *  \brief  A dense matrix implementation of MatrixInterface using a std::vector backend.
  */
 template <class ScalarImp = double, Common::StorageLayout storage_layout = Common::StorageLayout::dense_row_major>
 class CommonDenseMatrix
@@ -337,11 +338,17 @@ public:
     using V2 = typename Common::VectorAbstraction<SecondVectorType>;
     static_assert(V1::is_vector && V2::is_vector, "");
     assert(xx.size() == cols() && yy.size() == rows());
-    yy *= ScalarType(0.);
-    for (size_t rr = 0; rr < rows(); ++rr) {
-      V2::set_entry(yy, rr, 0.);
-      for (size_t cc = 0; cc < cols(); ++cc)
-        V2::add_to_entry(yy, rr, get_entry(rr, cc) * V1::get_entry(xx, cc));
+    if (storage_layout == Common::StorageLayout::dense_row_major && V1::is_contiguous) {
+      for (size_t rr = 0; rr < rows(); ++rr)
+        V2::set_entry(yy, rr, std::inner_product(get_ptr(rr), get_ptr(rr + 1), V1::data(xx), ScalarType(0.)));
+    } else {
+      assert(xx.size() == cols() && yy.size() == rows());
+      yy *= ScalarType(0.);
+      for (size_t rr = 0; rr < rows(); ++rr) {
+        V2::set_entry(yy, rr, 0.);
+        for (size_t cc = 0; cc < cols(); ++cc)
+          V2::add_to_entry(yy, rr, get_entry(rr, cc) * V1::get_entry(xx, cc));
+      }
     }
   }