diff --git a/src/icp.cpp b/src/icp.cpp
index 1e60fbc7f77fdaff24b9c542feb3b8eefc35d1be..aed55785ad0d4da49cfd87de5623f126fb77fe3a 100644
--- a/src/icp.cpp
+++ b/src/icp.cpp
@@ -165,9 +165,9 @@ icpOutput ICP::align(const LaserScan &_current_ls,
 
     if (result.valid)
     {
-        result.res_transf(0) = csm_output.x[0];//*_current_scan_params.range_max_/100;
-        result.res_transf(1) = csm_output.x[1];//*_current_scan_params.range_max_/100;
-        result.res_transf(2) = csm_output.x[2];//*_current_scan_params.range_max_/100;
+        result.res_transf(0) = csm_output.x[0];
+        result.res_transf(1) = csm_output.x[1];
+        result.res_transf(2) = csm_output.x[2];
 
         if (csm_input.do_compute_covariance)
         {
@@ -176,21 +176,21 @@ icpOutput ICP::align(const LaserScan &_current_ls,
                     result.res_covar(i, j) = _icp_params.cov_factor *
                     csm_output.cov_x_m->data[i * csm_output.cov_x_m->tda + j];
             
-            // Multiply variance in bigger eigenvalue direction
-            if (abs(_icp_params.cov_factor - 1) > 1e3)
+            // Grow covariance in the biggest eigenvalue direction
+            if (_icp_params.cov_max_eigv_factor - 1 > 1e-6)
             {
-                Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> eigensolver(result.res_covar);
+                Eigen::SelfAdjointEigenSolver<Eigen::Matrix2d> eigensolver(result.res_covar.topLeftCorner<2,2>());
 
                 if (eigensolver.info() == Eigen::Success)
                 {
-                    Eigen::Vector3d eigvs = eigensolver.eigenvalues();
+                    Eigen::Vector2d eigvs = eigensolver.eigenvalues();
                     Eigen::Index maxRow, maxCol;
                     float max_eigv = eigvs.maxCoeff(&maxRow, &maxCol);
 
-                    eigvs(maxRow) = _icp_params.cov_factor * max_eigv;
-                    result.res_covar = eigensolver.eigenvectors() *
-                                       eigvs.asDiagonal() *
-                                       eigensolver.eigenvectors().transpose();
+                    eigvs(maxRow) = _icp_params.cov_max_eigv_factor * max_eigv;
+                    result.res_covar.topLeftCorner<2,2>() = eigensolver.eigenvectors() *
+                                                            eigvs.asDiagonal() *
+                                                            eigensolver.eigenvectors().transpose();
                 }
             }
         }