diff --git a/mrtg/files/makeweather.py b/mrtg/files/makeweather.py
index 10710b6617a31a4075a7a31c2ef88213f0ff68f0..5a38ef7c934f96e140dffda46e32fb907aced4ab 100755
--- a/mrtg/files/makeweather.py
+++ b/mrtg/files/makeweather.py
@@ -40,7 +40,7 @@ def load_colorscale(filename):
                 b = rgb % 2**8 / 255
                 yield index, (r, g, b)
 
-def reduce_colorscale(datapoints, max_points=15, log=True):
+def reduce_colorscale(datapoints, max_points=15, log=True, zero_as_black=True):
     step = max(int(len(datapoints) / max_points), 1)
     last_point = datapoints[-1]
     colors = [point[1] for point in datapoints[::step]]
@@ -48,20 +48,21 @@ def reduce_colorscale(datapoints, max_points=15, log=True):
         colors.append(last_point[1])
     percentages = list(np.linspace(0, 1, len(colors)))
     if log:
-        percentages = list(np.logspace(-2, 0, len(colors)))
+        percentages = list(np.logspace(-3, 0, len(colors)))
+        percentages[0] = 0
+    if zero_as_black:
         percentages.insert(0, 0)
-        colors.insert(0, (0.5, 0.5, 0.5))
+        colors.insert(0, (0, 0, 0))
     return list(zip(percentages, colors))
 
 def convert_colorscale(datapoints):
     for min_data, max_data in zip(datapoints[:-1], datapoints[1:]):
-        min_data, max_data = sorted((min_data, max_data))
         min_value, (r1, g1, b1) = min_data
         max_value, (r2, g2, b2) = max_data
         yield "SCALE {min} {max} {red} {green} {blue} {red2} {green2} {blue2}".format(
-            min=int(min_value*100),
+            min="{:.1f}".format(min_value*100),
             red=int(r1*255), green=int(g1*255), blue=int(b1*255),
-            max=int(max_value*100),
+            max="{:.1f}".format(max_value*100),
             red2=int(r2*255), green2=int(g2*255), blue2=int(b2*255))