diff --git a/dune/common/densevector.hh b/dune/common/densevector.hh
index 7a30b277e8d6becb70855cfce3e29fb03962aadb..7ef0ec02a2c126e72cbc9694e2e25baaee38c191 100644
--- a/dune/common/densevector.hh
+++ b/dune/common/densevector.hh
@@ -4,6 +4,7 @@
 #define DUNE_DENSEVECTOR_HH
 
 #include <limits>
+#include <type_traits>
 
 #include "genericiterator.hh"
 #include "ftraits.hh"
@@ -406,32 +407,56 @@ namespace Dune {
     }
 
     //! vector space add scalar to all comps
-    derived_type& operator+= (const value_type& k)
-    {
+    template <typename ValueType>
+    typename std::enable_if<
+      std::is_convertible<ValueType, value_type>::value,
+      derived_type
+    >::type&
+    operator+= (const ValueType& kk)
+    {
+      const value_type& k = kk;
       for (size_type i=0; i<size(); i++)
         (*this)[i] += k;
       return asImp();
     }
 
     //! vector space subtract scalar from all comps
-    derived_type& operator-= (const value_type& k)
-    {
+    template <typename ValueType>
+    typename std::enable_if<
+      std::is_convertible<ValueType, value_type>::value,
+      derived_type
+    >::type&
+    operator-= (const ValueType& kk)
+    {
+      const value_type& k = kk;
       for (size_type i=0; i<size(); i++)
         (*this)[i] -= k;
       return asImp();
     }
 
     //! vector space multiplication with scalar
-    derived_type& operator*= (const value_type& k)
-    {
+    template <typename ValueType>
+    typename std::enable_if<
+      std::is_convertible<ValueType, value_type>::value,
+      derived_type
+    >::type&
+    operator*= (const ValueType& kk)
+    {
+      const value_type& k = kk;
       for (size_type i=0; i<size(); i++)
         (*this)[i] *= k;
       return asImp();
     }
 
     //! vector space division by scalar
-    derived_type& operator/= (const value_type& k)
-    {
+    template <typename ValueType>
+    typename std::enable_if<
+      std::is_convertible<ValueType, value_type>::value,
+      derived_type
+    >::type&
+    operator/= (const ValueType& kk)
+    {
+      const value_type& k = kk;
       for (size_type i=0; i<size(); i++)
         (*this)[i] /= k;
       return asImp();
diff --git a/dune/common/test/fvectortest.cc b/dune/common/test/fvectortest.cc
index e182145b63adbeff81a55570fe8a3794ad29a4e8..4a323dfdda8a3dee4266af2858a5ed5e9cda5799 100644
--- a/dune/common/test/fvectortest.cc
+++ b/dune/common/test/fvectortest.cc
@@ -366,6 +366,8 @@ int main()
     FieldVectorTest<int, 3>();
     FieldVectorTest<float, 3>();
     FieldVectorTest<double, 3>();
+    FieldVectorTest<int, 1>();
+    FieldVectorTest<double, 1>();
 
     test_nan();
     test_infinity_norms();