diff --git a/bob/learn/em/cpp/GMMBaseTrainer.cpp b/bob/learn/em/cpp/GMMBaseTrainer.cpp
index fac247b8ac8cc00dbddb8490a7d06882056d6528..a48a52015055db38703e7fb3486ebee4dbbed927 100644
--- a/bob/learn/em/cpp/GMMBaseTrainer.cpp
+++ b/bob/learn/em/cpp/GMMBaseTrainer.cpp
@@ -31,7 +31,6 @@ void bob::learn::em::GMMBaseTrainer::initialize(bob::learn::em::GMMMachine& gmm)
 {
   // Allocate memory for the sufficient statistics and initialise
   m_ss->resize(gmm.getNGaussians(),gmm.getNInputs());
-  gmm.setVarianceThresholds(this->m_mean_var_update_responsibilities_threshold);
 }
 
 void bob::learn::em::GMMBaseTrainer::eStep(bob::learn::em::GMMMachine& gmm,
diff --git a/bob/learn/em/cpp/Gaussian.cpp b/bob/learn/em/cpp/Gaussian.cpp
index b8bdbbf888966836b47b5c58d43876bc474002d7..cd45f60f4248605bc48a934fbb7e7df5bf12b766 100644
--- a/bob/learn/em/cpp/Gaussian.cpp
+++ b/bob/learn/em/cpp/Gaussian.cpp
@@ -84,7 +84,7 @@ void bob::learn::em::Gaussian::resize(const size_t n_inputs) {
   m_variance.resize(m_n_inputs);
   m_variance = 1;
   m_variance_thresholds.resize(m_n_inputs);
-  m_variance_thresholds = 0;
+  m_variance_thresholds = std::numeric_limits<double>::epsilon();
 
   // Re-compute g_norm, because m_n_inputs and m_variance
   // have changed