diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java
index cdc842dc5d0eda9a797e8448f648b9171c1da7e7..c3b2a52745c2349642cc92d3caad58ebbde748b5 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart04.java
@@ -62,7 +62,7 @@ public class DateChart04 implements ExampleChart {
         e.printStackTrace();
       }
       xData.add(date);
-      yData.add(Math.random() * i);
+      yData.add(Math.random() * i / 10000000000.0);
     }
 
     chart.addSeries("blah", xData, yData);
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java
index 7bca4d329d896e4b4aee3595feaeffefed460d20..39d9b8040a88b0ec0138bac0600cf5d121605d11 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/date/DateChart05.java
@@ -62,7 +62,7 @@ public class DateChart05 implements ExampleChart {
         e.printStackTrace();
       }
       xData.add(date);
-      yData.add(Math.random() * i);
+      yData.add(Math.random() * i / -100000000);
     }
 
     chart.addSeries("blah", xData, yData);
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java
index 3bbdb7a3695d822563275d35ba3e0b0be78fb7b5..070c412bb974ae3299008a9c0c932235ad60f587 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java
@@ -52,7 +52,7 @@ public class LineChart02 implements ExampleChart {
     for (int i = 0; i <= size; i++) {
       double radians = (Math.PI / (size / 2) * i);
       xData.add(i - size / 2);
-      yData.add(size * Math.sin(radians));
+      yData.add(-.000001 * Math.sin(radians));
     }
 
     // Create Chart
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java
index 5ca26d73e0e039c54eb286ec70870d7cafc96362..cf367556fe834c735814113736d5b98e74cfe052 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java
@@ -48,7 +48,7 @@ public class LineChart04 implements ExampleChart {
     chart.getStyleManager().setLegendVisible(false);
 
     for (int i = 0; i < 200; i++) {
-      Series series = chart.addSeries("A" + i, new double[] { Math.random(), Math.random() }, new double[] { Math.random() / 1000, Math.random() / 1000 });
+      Series series = chart.addSeries("A" + i, new double[] { Math.random() / 1000, Math.random() / 1000 }, new double[] { Math.random() / -1000, Math.random() / -1000 });
       series.setLineColor(SeriesColor.BLUE);
       series.setLineStyle(SeriesLineStyle.SOLID);
       series.setMarker(SeriesMarker.CIRCLE);
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java
index a84211ce3de2ae20107b74ce33c33bb003f224bb..0cab9ca47fd694edf35d8475086a3432a608650d 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart02.java
@@ -56,7 +56,7 @@ public class ScatterChart02 implements ExampleChart {
     for (int i = 0; i < size; i++) {
       double nextRandom = random.nextDouble();
       xData.add(Math.pow(10, nextRandom * 10));
-      yData.add(1000000000.0 + nextRandom + random.nextDouble());
+      yData.add(1000000000.0 + nextRandom * 100);
     }
 
     // Create Chart
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 3467ca53b217f65e2d3587f7ffd2a8fd4869aea2..89d5d6f4aa4bb5a67657dec7f9d6407621a7e779 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
@@ -16,6 +16,7 @@
 package com.xeiam.xchart.internal.chartpart;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 
 import com.xeiam.xchart.StyleManager;
 import com.xeiam.xchart.internal.Utils;
@@ -63,9 +64,11 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator {
 
     BigDecimal gridStep = BigDecimal.valueOf(getNumericalGridStep(tickSpace));
     BigDecimal firstPosition = BigDecimal.valueOf(getFirstPosition(gridStep.doubleValue()));
+    BigDecimal scaledfirstPosition = firstPosition.setScale(16, RoundingMode.HALF_UP);
+    // System.out.println("scaledfirstPosition: " + scaledfirstPosition); // chop off any double imprecision
 
     // generate all tickLabels and tickLocations from the first to last position
-    for (BigDecimal tickPosition = firstPosition; tickPosition.compareTo(BigDecimal.valueOf(maxValue + gridStep.doubleValue() * 0.2)) <= 0; tickPosition = tickPosition.add(gridStep)) {
+    for (BigDecimal tickPosition = scaledfirstPosition; tickPosition.compareTo(BigDecimal.valueOf(maxValue + gridStep.doubleValue() * 0.2)) <= 0; tickPosition = tickPosition.add(gridStep)) {
 
       tickLabels.add(numberFormatter.formatNumber(tickPosition.doubleValue(), minValue, maxValue));
       // here we convert tickPosition finally to plot space, i.e. pixels
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java
index a8c9783211d7fc07fa2b67605658bc6b97102ca7..3fd3da4b302c334598fcf6b20466773db2e79012 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/NumberFormatter.java
@@ -62,12 +62,12 @@ public class NumberFormatter {
     System.out.println("placeOfValue: " + placeOfValue);
 
     if (placeOfDifference <= 4 && placeOfDifference >= -4) {
-      System.out.println("getNormalDecimalPattern");
+      // System.out.println("getNormalDecimalPattern");
       return getNormalDecimalPatternPositive(placeOfValue, placeOfDifference);
     }
     else {
-      System.out.println("getScientificDecimalPattern");
-      return getScientificDecimalPattern(placeOfValue, placeOfDifference);
+      // System.out.println("getScientificDecimalPattern");
+      return getScientificDecimalPattern();
     }
   }
 
@@ -97,18 +97,9 @@ public class NumberFormatter {
     return sb.toString();
   }
 
-  private String getScientificDecimalPattern(int placeOfValue, int placeOfDifference) {
+  private String getScientificDecimalPattern() {
 
-    StringBuilder sb = new StringBuilder();
-    for (int i = placeOfValue; i >= 0; i--) {
-      sb.append("0");
-      if (i == placeOfDifference) {
-        sb.append(".");
-      }
-    }
-    sb.append("E0");
-    System.out.println(sb.toString());
-    return sb.toString();
+    return "0E0";
   }
 
   /**