diff --git a/dune/istl/matrixutils.hh b/dune/istl/matrixutils.hh
index 03572d689cd2e291bb55dfa3fd51a22dc45e09ee..5ec10838f262c5b765ae5f7193cc631f2049847a 100644
--- a/dune/istl/matrixutils.hh
+++ b/dune/istl/matrixutils.hh
@@ -11,6 +11,7 @@
 #include <dune/common/dynmatrix.hh>
 #include <dune/common/diagonalmatrix.hh>
 #include <dune/common/unused.hh>
+#include <dune/common/scalarmatrixview.hh>
 #include <dune/istl/scaledidmatrix.hh>
 #include "istlexception.hh"
 
@@ -59,8 +60,10 @@ namespace Dune
         if(diagonal==row->end())
           DUNE_THROW(ISTLError, "Missing diagonal value in row "<<row.index()
                                                                 <<" at block recursion level "<<l-blocklevel);
-        else
-          CheckIfDiagonalPresent<typename Matrix::block_type,blocklevel-1,l>::check(*diagonal);
+        else{
+          auto m = Impl::asMatrix(*diagonal);
+          CheckIfDiagonalPresent<decltype(m),blocklevel-1,l>::check(m);
+        }
       }
 #endif
     }