diff --git a/Eigen/src/Core/util/DisableMSVCWarnings.h b/Eigen/src/Core/util/DisableMSVCWarnings.h
index 1f3592b..765ddec 100644
--- a/Eigen/src/Core/util/DisableMSVCWarnings.h
+++ b/Eigen/src/Core/util/DisableMSVCWarnings.h
@@ -1,5 +1,5 @@
 
 #ifdef _MSC_VER
   #pragma warning( push )
-  #pragma warning( disable : 4181 4244 4127 4211 )
+  #pragma warning( disable : 4181 4244 4127 4211 4717 )
 #endif
diff --git a/test/geometry.cpp b/test/geometry.cpp
index cd2dbc7..df8ed42 100644
--- a/test/geometry.cpp
+++ b/test/geometry.cpp
@@ -95,7 +95,7 @@
   // angular distance
   Scalar refangle = ei_abs(AngleAxisx(q1.inverse()*q2).angle());
   if (refangle>Scalar(M_PI))
-    refangle = 2.*Scalar(M_PI) - refangle;
+    refangle = Scalar(2)*Scalar(M_PI) - refangle;
   VERIFY(ei_isApprox(q1.angularDistance(q2), refangle, largeEps));
 
   // rotation matrix conversion
@@ -109,13 +109,13 @@
   q2 = q1.toRotationMatrix();
   VERIFY_IS_APPROX(q1*v1,q2*v1);
 
-  matrot1 = AngleAxisx(0.1, Vector3::UnitX())
-          * AngleAxisx(0.2, Vector3::UnitY())
-          * AngleAxisx(0.3, Vector3::UnitZ());
+  matrot1 = AngleAxisx(Scalar(0.1), Vector3::UnitX())
+          * AngleAxisx(Scalar(0.2), Vector3::UnitY())
+          * AngleAxisx(Scalar(0.3), Vector3::UnitZ());
   VERIFY_IS_APPROX(matrot1 * v1,
-       AngleAxisx(0.1, Vector3(1,0,0)).toRotationMatrix()
-    * (AngleAxisx(0.2, Vector3(0,1,0)).toRotationMatrix()
-    * (AngleAxisx(0.3, Vector3(0,0,1)).toRotationMatrix() * v1)));
+       AngleAxisx(Scalar(0.1), Vector3(1,0,0)).toRotationMatrix()
+    * (AngleAxisx(Scalar(0.2), Vector3(0,1,0)).toRotationMatrix()
+    * (AngleAxisx(Scalar(0.3), Vector3(0,0,1)).toRotationMatrix() * v1)));
 
   // angle-axis conversion
   AngleAxisx aa = q1;
@@ -143,8 +143,8 @@
   // Transform
   // TODO complete the tests !
   a = 0;
-  while (ei_abs(a)<0.1)
-    a = ei_random<Scalar>(-0.4*Scalar(M_PI), 0.4*Scalar(M_PI));
+  while (ei_abs(a)<Scalar(0.1))
+    a = ei_random<Scalar>(-Scalar(0.4)*Scalar(M_PI), Scalar(0.4)*Scalar(M_PI));
   q1 = AngleAxisx(a, v0.normalized());
   Transform3 t0, t1, t2;
   t0.setIdentity();
@@ -241,7 +241,7 @@
   Vector2 v20 = Vector2::Random();
   Vector2 v21 = Vector2::Random();
   for (int k=0; k<2; ++k)
-    if (ei_abs(v21[k])<1e-3) v21[k] = 1e-3;
+    if (ei_abs(v21[k])<Scalar(1e-3)) v21[k] = Scalar(1e-3);
   t21.setIdentity();
   t21.linear() = Rotation2D<Scalar>(a).toRotationMatrix();
   VERIFY_IS_APPROX(t20.fromPositionOrientationScale(v20,a,v21).matrix(),
