diff --git a/src/control.cpp b/src/control.cpp
index 382baba97e927e59a0d52b4870af4bc899d4e81e..92bdd58d3e80612b584c681adfec70e7798a6a42 100644
--- a/src/control.cpp
+++ b/src/control.cpp
@@ -507,7 +507,13 @@ void Control::resizeAxes(int plot)
         {
             if (logAxis)
             {
-                axis->setRange(std::max(0.0000001, 0.8 * minX), 1.2 * maxX);
+                minX = std::max(minX, 1E-16);
+                maxX = std::max(maxX, 1E-15);
+
+                double lower = floor(log10(minX));
+                double upper = ceil(log10(maxX));
+
+                axis->setRange(pow(10, lower), pow(10, upper));
             }
             else
             {
@@ -519,7 +525,13 @@ void Control::resizeAxes(int plot)
         {
             if (logAxis)
             {
-                axis->setRange(std::max(0.0000001, 0.8 * minY), 1.2 * maxY);
+                minY = std::max(minY, 1E-16);
+                maxY = std::max(maxY, 1E-15);
+
+                double lower = floor(log10(minY));
+                double upper = ceil(log10(maxY));
+
+                axis->setRange(pow(10, lower), pow(10, upper));
             }
             else
             {
@@ -618,7 +630,7 @@ void Control::setPlotScale(int plot, int x, int y)
             QLogValueAxis* newLogAxis = new QLogValueAxis();
             newLogAxis->setBase(10.0);
             newLogAxis->setMax(std::max(linAxis->max(), 0.1));
-            newLogAxis->setMin(std::max(linAxis->min(), 0.000001));
+            newLogAxis->setMin(std::max(linAxis->min(), (double)(1.0E-16)));
             newLogAxis->setVisible(linAxis->isVisible());
             newLogAxis->setTitleFont(linAxis->titleFont());
             newLogAxis->setTitleText(linAxis->titleText());