diff --git a/demos/critical_filtering.py b/demos/critical_filtering.py
index 60cab0f6f3c18ba605ddaca5fff4d1c3bb81ef3e..79d445882b0bb9203a884fcfc841c73f69394880 100644
--- a/demos/critical_filtering.py
+++ b/demos/critical_filtering.py
@@ -117,9 +117,9 @@ if __name__ == "__main__":
                                convergence_level=1,
                                iteration_limit=5,
                                callback=convergence_measure)
-    minimizer2 = VL_BFGS(convergence_tolerance=1e-4,
+    minimizer2 = VL_BFGS(convergence_tolerance=1e-10,
                          convergence_level=1,
-                         iteration_limit=20,
+                         iteration_limit=30,
                          callback=convergence_measure,
                          max_history_length=20)
     minimizer3 = SteepestDescent(convergence_tolerance=1e-4,
diff --git a/nifty/sugar.py b/nifty/sugar.py
index 3048cc58300d9f44d6799ac23bcc711fbd4f158f..3a77bfcb95d754eb18f92d663fb598da01d25084 100644
--- a/nifty/sugar.py
+++ b/nifty/sugar.py
@@ -111,10 +111,12 @@ def generate_posterior_sample(mean, covariance):
     power = S.diagonal().power_analyze()**.5
     mock_signal = power.power_synthesize(real_signal=True)
 
-    noise = N.diagonal(bare=True).val
+    noise = N.diagonal(bare=True)
 
     mock_noise = Field.from_random(random_type="normal", domain=N.domain,
-                                   std=sqrt(noise), dtype=noise.dtype)
+                                   dtype=noise.dtype)
+    mock_noise *= sqrt(noise)
+
     mock_data = R(mock_signal) + mock_noise
 
     mock_j = R.adjoint_times(N.inverse_times(mock_data))