diff --git a/dune/gfe/gramschmidtsolver.hh b/dune/gfe/gramschmidtsolver.hh
index 5b70d665bd9b89303e9606051b67ace0da0d580d..0577e3588f5fd19622e2d6c5a52982ea40d00678 100644
--- a/dune/gfe/gramschmidtsolver.hh
+++ b/dune/gfe/gramschmidtsolver.hh
@@ -63,13 +63,14 @@ public:
   {
     // Use the Gram-Schmidt algorithm to compute a basis that is orthonormal
     // with respect to the given matrix.
-    for (int i=0; i<dim; i++) {
+    normalize(matrix, orthonormalBasis_[0]);
 
-      normalize(matrix, orthonormalBasis_[i]);
+    for (int i=1; i<dim; i++) {
 
       for (int j=0; j<i; j++)
-        project(matrix, orthonormalBasis_[i], orthonormalBasis_[j]);
+        project(matrix, orthonormalBasis_[j], orthonormalBasis_[i]);
 
+      normalize(matrix, orthonormalBasis_[i]);
     }
 
   }
@@ -100,14 +101,14 @@ public:
     // Use the Gram-Schmidt algorithm to compute a basis that is orthonormal
     // with respect to the given matrix.
     Dune::FieldMatrix<field_type,dim,embeddedDim> orthonormalBasis(basis);
+    normalize(matrix, orthonormalBasis[0]);
 
-    for (int i=0; i<dim; i++) {
-
-      normalize(matrix, orthonormalBasis[i]);
+    for (int i=1; i<dim; i++) {
 
       for (int j=0; j<i; j++)
-        project(matrix, orthonormalBasis[i], orthonormalBasis[j]);
+        project(matrix, orthonormalBasis[j], orthonormalBasis[i]);
 
+      normalize(matrix, orthonormalBasis[i]);
     }
 
     // Solve the system in the orthonormal basis