diff --git a/components/calibration/src/parameters.cpp b/components/calibration/src/parameters.cpp
index a947771378f592e2398bb3e278e7214d213e8159..ef352b8a10908c7c57c8332b14d5fc4f53ee722a 100644
--- a/components/calibration/src/parameters.cpp
+++ b/components/calibration/src/parameters.cpp
@@ -103,16 +103,23 @@ Mat Camera::intrinsicMatrix() const {
 
 Mat Camera::distortionCoefficients() const {
 	Mat D;
-	// OpenCV distortion parameter sizes: 4, 5, 8, 12, 14
 	if      (Camera::n_distortion_parameters <= 4)  { D = Mat::zeros(4, 1, CV_64FC1); }
 	else if (Camera::n_distortion_parameters <= 5)  { D = Mat::zeros(5, 1, CV_64FC1); }
 	else if (Camera::n_distortion_parameters <= 8)  { D = Mat::zeros(8, 1, CV_64FC1); }
 	else if (Camera::n_distortion_parameters <= 12) { D = Mat::zeros(12, 1, CV_64FC1); }
 	else if (Camera::n_distortion_parameters <= 14) { D = Mat::zeros(14, 1, CV_64FC1); }
 
-	for (int i = 0; i < Camera::n_distortion_parameters; i++) {
-		D.at<double>(i) = data[Parameter::DISTORTION+i];
+	switch(Camera::n_distortion_parameters) {
+		case 14:
+		case 12:
+		case 8:
+		case 5:
+			D.at<double>(4) = data[Parameter::K3];
+		case 4:
+			D.at<double>(0) = data[Parameter::K1];
+			D.at<double>(1) = data[Parameter::K2];
 	}
+
 	return D;
 }