diff --git a/Eigen/src/Core/PermutationMatrix.h b/Eigen/src/Core/PermutationMatrix.h
index 8227c9b..4283226 100644
--- a/Eigen/src/Core/PermutationMatrix.h
+++ b/Eigen/src/Core/PermutationMatrix.h
@@ -192,7 +192,7 @@
 
     /** Sets *this to be the identity permutation matrix of given size.
       */
-    void setIdentity(int size)
+    void setIdentity(Index size)
     {
       resize(size);
       setIdentity();
diff --git a/test/stdvector_overload.cpp b/test/stdvector_overload.cpp
index 86f4308..898719a 100644
--- a/test/stdvector_overload.cpp
+++ b/test/stdvector_overload.cpp
@@ -43,8 +43,8 @@
 template<typename MatrixType>
 void check_stdvector_matrix(const MatrixType& m)
 {
-  int rows = m.rows();
-  int cols = m.cols();
+  typename MatrixType::Index rows = m.rows();
+  typename MatrixType::Index cols = m.cols();
   MatrixType x = MatrixType::Random(rows,cols), y = MatrixType::Random(rows,cols);
   std::vector<MatrixType> v(10, MatrixType(rows,cols)), w(20, y);
   v[5] = x;
diff --git a/test/svd.cpp b/test/svd.cpp
index 9f3072d..fbeba79 100644
--- a/test/svd.cpp
+++ b/test/svd.cpp
@@ -31,8 +31,8 @@
   /* this test covers the following files:
      SVD.h
   */
-  int rows = m.rows();
-  int cols = m.cols();
+  typename MatrixType::Index rows = m.rows();
+  typename MatrixType::Index cols = m.cols();
 
   typedef typename MatrixType::Scalar Scalar;
   typedef typename NumTraits<Scalar>::Real RealScalar;
diff --git a/test/swap.cpp b/test/swap.cpp
index c11f0fe..74543a6 100644
--- a/test/swap.cpp
+++ b/test/swap.cpp
@@ -43,8 +43,8 @@
   typedef typename MatrixType::Scalar Scalar;
 
   ei_assert((!ei_is_same_type<MatrixType,OtherMatrixType>::ret));
-  int rows = m.rows();
-  int cols = m.cols();
+  typename MatrixType::Index rows = m.rows();
+  typename MatrixType::Index cols = m.cols();
   
   // construct 3 matrix guaranteed to be distinct
   MatrixType m1 = MatrixType::Random(rows,cols);
diff --git a/test/triangular.cpp b/test/triangular.cpp
index 302984e..673a3d2 100644
--- a/test/triangular.cpp
+++ b/test/triangular.cpp
@@ -34,8 +34,8 @@
 
   RealScalar largerEps = 10*test_precision<RealScalar>();
 
-  int rows = m.rows();
-  int cols = m.cols();
+  typename MatrixType::Index rows = m.rows();
+  typename MatrixType::Index cols = m.cols();
 
   MatrixType m1 = MatrixType::Random(rows, cols),
              m2 = MatrixType::Random(rows, cols),
diff --git a/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h b/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h
index a25c9cd..e840dd4 100644
--- a/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h
+++ b/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h
@@ -79,7 +79,7 @@
         /* Local variables */
         Scalar h;
         int nfev=0;
-        const int n = _x.size();
+        const typename InputType::Index n = _x.size();
         const Scalar eps = ei_sqrt((std::max(epsfcn,NumTraits<Scalar>::epsilon() )));
         ValueType val1, val2;
         InputType x = _x;
diff --git a/unsupported/test/NonLinearOptimization.cpp b/unsupported/test/NonLinearOptimization.cpp
index cb70f2a..851c534 100644
--- a/unsupported/test/NonLinearOptimization.cpp
+++ b/unsupported/test/NonLinearOptimization.cpp
@@ -447,7 +447,7 @@
         }
         return 0;
     }
-    int df(const VectorXd &x, VectorXd &jac_row, int rownb)
+    int df(const VectorXd &x, VectorXd &jac_row, VectorXd::Index rownb)
     {
         assert(x.size()==3);
         assert(jac_row.size()==x.size());
