diff --git a/Framework/MDAlgorithms/src/ConvertWANDSCDtoMDE.cpp b/Framework/MDAlgorithms/src/ConvertWANDSCDtoMDE.cpp
index 426f1be47ba0ab6a5b68a77889a40508007237ae..cd8d1a9cb819a4bb8702f25f730e15d3cc7517a4 100644
--- a/Framework/MDAlgorithms/src/ConvertWANDSCDtoMDE.cpp
+++ b/Framework/MDAlgorithms/src/ConvertWANDSCDtoMDE.cpp
@@ -17,7 +17,9 @@
 #include "MantidKernel/ArrayProperty.h"
 #include "MantidKernel/PropertyWithValue.h"
 #include "MantidKernel/UnitLabelTypes.h"
-#include <Eigen/Dense>
+
+#include "Eigen/Dense"
+#include "boost/math/constants/constants.hpp"
 
 namespace Mantid {
 namespace MDAlgorithms {
@@ -164,38 +166,37 @@ void ConvertWANDSCDtoMDE::exec() {
   bc->setSplitInto(5);
   outputWS->splitBox();
 
-  MDEventWorkspace<MDEvent<3>, 3>::sptr mdws_mdevt_3 =
+  auto mdws_mdevt_3 =
       boost::dynamic_pointer_cast<MDEventWorkspace<MDEvent<3>, 3>>(outputWS);
   MDEventInserter<MDEventWorkspace<MDEvent<3>, 3>::sptr> inserter(mdws_mdevt_3);
 
-  double k = 2. * M_PI / wavelength;
-  std::vector<Eigen::Vector3d> q_lab_pre;
+  float k =
+      2.f * boost::math::float_constants::pi / static_cast<float>(wavelength);
+  std::vector<Eigen::Vector3f> q_lab_pre;
   q_lab_pre.reserve(azimuthal.size());
   for (size_t m = 0; m < azimuthal.size(); ++m) {
-    q_lab_pre.push_back({-sin(twotheta[m]) * cos(azimuthal[m]) * k,
-                         -sin(twotheta[m]) * sin(azimuthal[m]) * k,
-                         (1. - cos(twotheta[m])) * k});
+    twotheta_f = static_cast<float>(twotheta[m]);
+    azimuthal_f = static_cast<float>(azimuthal[m]);
+    q_lab_pre.push_back({-sin(twotheta_f) * cos(azimuthal_f) * k,
+                         -sin(twotheta_f) * sin(azimuthal_f) * k,
+                         (1.f - cos(twotheta_f)) * k});
   }
 
   for (size_t n = 0; n < s1.size(); n++) {
-    Eigen::Matrix<double, 3, 3> goniometer;
-    goniometer(0, 0) = cos(s1[n] * M_PI / 180);
-    goniometer(0, 2) = sin(s1[n] * M_PI / 180);
-    goniometer(2, 0) = -sin(s1[n] * M_PI / 180);
-    goniometer(2, 2) = cos(s1[n] * M_PI / 180);
+    Eigen::Matrix3f goniometer;
+    float sl_radian =
+        static_cast<float>(s1[n]) * boost::math::float_constants::pi / 180.f;
+    goniometer(0, 0) = cos(sl_radian);
+    goniometer(0, 2) = sin(sl_radian);
+    goniometer(2, 0) = -sin(sl_radian);
+    goniometer(2, 2) = cos(sl_radian);
     goniometer = goniometer.inverse();
     for (size_t m = 0; m < azimuthal.size(); m++) {
-      Eigen::Vector3f q_sample;
-      auto q_lab = goniometer * q_lab_pre[m];
-      q_sample[0] = static_cast<Mantid::coord_t>(q_lab[0]);
-      q_sample[1] = static_cast<Mantid::coord_t>(q_lab[1]);
-      q_sample[2] = static_cast<Mantid::coord_t>(q_lab[2]);
+      Eigen::Vector3f q_sample = goniometer * q_lab_pre[m];
       size_t idx = n * azimuthal.size() + m;
-      signal_t signal = inputWS->getSignalAt(idx);
+      coord_t signal = static_cast<coord_t>(inputWS->getSignalAt(idx));
       if (signal > 0)
-        inserter.insertMDEvent(static_cast<float>(signal),
-                               static_cast<float>(signal), 0, 0,
-                               q_sample.data());
+        inserter.insertMDEvent(signal, signal, 0, 0, q_sample.data());
     }
   }