diff --git a/nifty5/minimization/iteration_controllers.py b/nifty5/minimization/iteration_controllers.py
index e27201e85501a2612372b5dbb274555dc55dc13d..c0c2c9ca111f87e377a546a01201cc45fbe15e65 100644
--- a/nifty5/minimization/iteration_controllers.py
+++ b/nifty5/minimization/iteration_controllers.py
@@ -133,7 +133,7 @@ class GradientNormController(IterationController):
         if self._iteration_limit is not None:
             if self._itcount >= self._iteration_limit:
                 logger.warning(
-                    "{} Iteration limit reached. Assuming convergence"
+                    "{}Iteration limit reached. Assuming convergence"
                     .format("" if self._name is None else self._name+": "))
                 return self.CONVERGED
         if self._ccount >= self._convergence_level:
diff --git a/nifty5/plot.py b/nifty5/plot.py
index 53650755c7dcbb68028aa21a52bd59d65c7759bb..799500d6aee13219c6b5e63114f33de6bec6c009 100644
--- a/nifty5/plot.py
+++ b/nifty5/plot.py
@@ -168,17 +168,29 @@ def _rgb_data(spectral_cube):
             res[:,i] = lambda2xyz(1./E[i])
         return res
 
+    def to_logscale(arr, lo, hi):
+        res = arr.clip(lo, hi)
+        res = np.log(res/hi)
+        tmp = np.log(hi/lo)
+        res += tmp
+        res /= tmp
+        return res
+
+    spectral_cube = spectral_cube.reshape((-1, spectral_cube.shape[-1]))
     xyz = getxyz(spectral_cube.shape[-1])
     xyz_data = np.tensordot(spectral_cube, xyz, axes=[-1, -1])
-    xyz_data /= xyz_data.max()
+#    vmax = max(xyz_data[:,0].max()/0.9505,
+#               xyz_data[:,1].max(),
+#               xyz_data[:,2].max()/1.0890)
+    vmax = xyz_data.max()
+    xyz_data /= vmax
+    xyz_data = to_logscale(xyz_data, 1e-3, 1.)
     rgb_data = xyz_data.copy()
-    it = np.nditer(xyz_data[:,:,0], flags=['multi_index'])
-    while not it.finished:
-        rgb_data[it.multi_index] = _gammacorr(
-            np.matmul(MATRIX_SRGB_D65, xyz_data[it.multi_index]))
-        it.iternext()
-    rgb_data = rgb_data.clip(0.,1.)
-    return rgb_data
+    it = np.nditer(xyz_data[:,0], flags=['multi_index'])
+    for x in range(xyz_data.shape[0]):
+        rgb_data[x] = _gammacorr(np.matmul(MATRIX_SRGB_D65, xyz_data[x]))
+    rgb_data = rgb_data.clip(1e-13,1.)
+    return rgb_data.reshape(spectral_cube.shape[:-1]+(-1,))
 
 
 def _find_closest(A, target):