diff --git a/Core/Export/PythonFormatting.cpp b/Core/Export/PythonFormatting.cpp
index 8fdfa4e56c9b7a570bb309a95f41bc4cbfa17a19..99cc6c753b7f5d49eb6c36da7b2da1a306bd4ac7 100644
--- a/Core/Export/PythonFormatting.cpp
+++ b/Core/Export/PythonFormatting.cpp
@@ -25,6 +25,7 @@
 #include "Line.h"
 #include "Macros.h"
 #include "MultiLayer.h"
+#include "Numeric.h"
 #include "ParameterPool.h"
 #include "Polygon.h"
 #include "ExportToPython.h"
diff --git a/Core/Instrument/LLData.h b/Core/Instrument/LLData.h
index baeba9435b78c2ba7af68578853f5a7501654e15..73119f742e88859df81c5fe4204bba5bf006efee 100644
--- a/Core/Instrument/LLData.h
+++ b/Core/Instrument/LLData.h
@@ -18,7 +18,7 @@
 
 #include "EigenCore.h"
 #include "Exceptions.h"
-#include "Numeric.h"
+#include <limits>
 
 //! @class LLData
 //! @ingroup tools_internal
@@ -185,10 +185,11 @@ template<class T> LLData<T>& LLData<T>::operator/=(const LLData& right)
             "Operation /= on LLData requires both operands to have the same dimensions");
     for (size_t i=0; i<getTotalSize(); ++i) {
         double ratio;
-        if( std::abs(m_data_array[i]-right[i]) <= Numeric::double_epsilon*std::abs(right[i])) {
+        if( std::abs(m_data_array[i]-right[i]) <=
+            std::numeric_limits<double>::epsilon()*std::abs(right[i])) {
             ratio = 1.0;
-        } else if (std::abs(right[i]) <= Numeric::double_min) {
-            ratio = double(m_data_array[i])/Numeric::double_min;
+        } else if (std::abs(right[i]) <= std::numeric_limits<double>::min()) {
+            ratio = double(m_data_array[i])/std::numeric_limits<double>::min();
         } else {
             ratio = double(m_data_array[i]/right[i]);
         }
diff --git a/Core/SoftParticle/FormFactorGauss.cpp b/Core/SoftParticle/FormFactorGauss.cpp
index 8c222fb75a3d0f882ec2ece0c7142191d3aa7d38..55c8c97eab9bab63ddc2ebde66c54bddcaa6f404 100644
--- a/Core/SoftParticle/FormFactorGauss.cpp
+++ b/Core/SoftParticle/FormFactorGauss.cpp
@@ -15,23 +15,21 @@
 
 #include "FormFactorGauss.h"
 #include "BornAgainNamespace.h"
-#include "Numeric.h"
 #include "Pi.h"
 #include "RealParameter.h"
+#include <limits>
 
 FormFactorGauss::FormFactorGauss(double volume)
-{
-    m_height = std::pow(volume, 1.0/3.0);
-    m_width = m_height;
-    initialize();
-}
+    : FormFactorGauss( std::pow(volume, 1.0/3.0), std::pow(volume, 1.0/3.0) ) {}
 
 FormFactorGauss::FormFactorGauss(double width, double height)
 {
     m_width = width;
     m_height = height;
-    initialize();
-}
+    setName(BornAgain::FFGaussType);
+    registerParameter(BornAgain::Width, &m_width).setUnit("nm").setNonnegative();
+    registerParameter(BornAgain::Height, &m_height).setUnit("nm").setNonnegative();
+    m_max_ql = std::sqrt(-4 * Pi::PI * std::log(std::numeric_limits<double>::min()) / 3);}
 
 complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const
 {
@@ -49,11 +47,3 @@ complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const
     return exp_I(qzHdiv2) * m_height * m_width * m_width *
         std::exp(-(qxr*qxr + qyr*qyr + qzh*qzh) / 4.0 / Pi::PI);
 }
-
-void FormFactorGauss::initialize()
-{
-    setName(BornAgain::FFGaussType);
-    registerParameter(BornAgain::Width, &m_width).setUnit("nm").setNonnegative();
-    registerParameter(BornAgain::Height, &m_height).setUnit("nm").setNonnegative();
-    m_max_ql = std::sqrt(-4 * Pi::PI * std::log(Numeric::double_min) / 3.0);
-}
diff --git a/Core/Tools/Numeric.cpp b/Core/Tools/Numeric.cpp
index b6caab1610b151e4c99d694cdeff81dfb796e9ca..ec87d422646b1afa752f192768f1021ac7fd33b0 100644
--- a/Core/Tools/Numeric.cpp
+++ b/Core/Tools/Numeric.cpp
@@ -27,7 +27,6 @@ bool areAlmostEqual(double a, double b, double tolerance)
 {
     constexpr double eps = std::numeric_limits<double>::epsilon();
     return std::abs(a-b) <= eps * std::max( tolerance*eps, std::max(1., tolerance)*std::abs(b) );
-//    return get_relative_difference(a, b) < tolerance_factor*double_epsilon;
 }
 
 //! calculates safe relative difference |(a-b)/b|
diff --git a/Core/Tools/Numeric.h b/Core/Tools/Numeric.h
index 5e23b6ac7b06047088ba342a256193663303e64c..f1580ca7cbf664b2de469fc0d74f856b1bd51503 100644
--- a/Core/Tools/Numeric.h
+++ b/Core/Tools/Numeric.h
@@ -23,11 +23,8 @@
 
 namespace Numeric {
 
-    // TODO move initialization (and #include <limits>) to .cpp
 static const double double_epsilon = std::numeric_limits<double>::epsilon();
 
-static const double double_min = std::numeric_limits<double>::min();
-
 //! compare two doubles
 bool BA_CORE_API_ areAlmostEqual(double a, double b, double tolerance_factor=1.0);
 
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index 47221a8daa4d5a005cda9db8d45cea1baaad805a..99c08d8ccb20d67fa8bbac6f40a07f4af7107b7d 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -40,6 +40,7 @@
 #include "Line.h"
 #include "MaskItems.h"
 #include "ModelPath.h"
+#include "Numeric.h"
 #include "ParameterPattern.h"
 #include "ParticleDistributionItem.h"
 #include "ParticleItem.h"
@@ -51,6 +52,7 @@
 #include "Units.h"
 #include "VectorItem.h"
 #include <QDebug>
+#include <limits>
 
 using namespace BornAgain;