diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
index 3759659dc1a296a7a3522bac4fd920e3e56f291e..890aba97a871fa79b48194073398c913de5f744c 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickNumericalCalculator.java
@@ -82,6 +82,11 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator {
    */
   private BigDecimal getGridStep(int tickSpace) {
 
+    // this prevents an infinite loop when the plot gets sized really small.
+    if (tickSpace < 10) {
+      return BigDecimal.ONE;
+    }
+
     // the span of the data
     double span = Math.abs(maxValue.subtract(minValue).doubleValue()); // in data space
 
@@ -108,7 +113,7 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator {
       }
     }
     else {
-      while (significand >= 10) {
+      while (significand >= 10 || significand == Double.NEGATIVE_INFINITY) {
         significand /= 10.0;
         exponent++;
       }