diff --git a/dune/gfe/surfacecosseratenergy.hh b/dune/gfe/surfacecosseratenergy.hh
index e34f674016f88a23f353913b8981e01145634e3b..7ece7fe22f638490aeeec3469d6d7e8cb3bc92b0 100644
--- a/dune/gfe/surfacecosseratenergy.hh
+++ b/dune/gfe/surfacecosseratenergy.hh
@@ -263,6 +263,9 @@ RT energy(const typename Basis::LocalView& localView,
 
       auto aContravariant = aCovariant;
       aContravariant.invert();
+      // The contravariant base vectors are the *columns* of the inverse of the covariant matrix
+      // To get an easier access to the columns, we use the transpose of the contravariant matrix
+      aContravariant = Dune::GFE::transpose(aContravariant);
 
       Dune::FieldMatrix<double,3,3> a(0);
       for (int alpha=0; alpha<boundaryDim; alpha++)