diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java
index 44decee01fff3d398303b754bfc59be40da9d982..885732f652ab1dad002fbb7d260cadb1e498aa5a 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java
@@ -137,7 +137,9 @@ public class Axis implements ChartPart {
     bounds = new Rectangle2D.Double();
 
     // determine Axis bounds
-    if (direction == Direction.Y) { // Y-Axis
+    if (direction == Direction.Y) { // Y-Axis - gets called first
+
+      // first determine the height of
 
       // calculate paint zone
       // ----
@@ -153,7 +155,6 @@ public class Axis implements ChartPart {
       double height =
           getChartPainter().getHeight() - yOffset - axisPair.getXAxis().getSizeHint() - getChartPainter().getStyleManager().getPlotPadding() - getChartPainter().getStyleManager().getChartPadding();
       Rectangle2D yAxisRectangle = new Rectangle2D.Double(xOffset, yOffset, width, height);
-
       this.paintZone = yAxisRectangle;
       g.setColor(Color.green);
       g.draw(yAxisRectangle);
@@ -179,7 +180,7 @@ public class Axis implements ChartPart {
 
       double xOffset =
           axisPair.getYAxis().getBounds().getWidth() + (getChartPainter().getStyleManager().isYAxisTicksVisible() ? getChartPainter().getStyleManager().getPlotPadding() : 0)
-              + getChartPainter().getStyleManager().getChartPadding();
+          + getChartPainter().getStyleManager().getChartPadding();
       double yOffset = axisPair.getYAxis().getBounds().getY() + axisPair.getYAxis().getBounds().getHeight() + getChartPainter().getStyleManager().getPlotPadding();
 
       double chartLegendWidth = 0;
@@ -191,19 +192,19 @@ public class Axis implements ChartPart {
 
           getChartPainter().getWidth()
 
-              - axisPair.getYAxis().getBounds().getWidth()
+          - axisPair.getYAxis().getBounds().getWidth() // y-axis was already painted
 
-              - chartLegendWidth
+          - chartLegendWidth
 
-              - 2
+          - 2
               * getChartPainter().getStyleManager().getChartPadding()
 
-              - (getChartPainter().getStyleManager().isYAxisTicksVisible() ? (getChartPainter().getStyleManager().getPlotPadding()) : 0)
+          - (getChartPainter().getStyleManager().isYAxisTicksVisible() ? (getChartPainter().getStyleManager().getPlotPadding()) : 0)
 
-              - (getChartPainter().getStyleManager().getLegendPosition() == LegendPosition.OutsideE && getChartPainter().getStyleManager().isLegendVisible() ? getChartPainter().getStyleManager()
-                  .getChartPadding() : 0)
+          - (getChartPainter().getStyleManager().getLegendPosition() == LegendPosition.OutsideE && getChartPainter().getStyleManager().isLegendVisible() ? getChartPainter().getStyleManager()
+              .getChartPadding() : 0)
 
-      ;
+              ;
 
       double height = this.getSizeHint();
       Rectangle2D xAxisRectangle = new Rectangle2D.Double(xOffset, yOffset, width, height);
@@ -232,8 +233,6 @@ public class Axis implements ChartPart {
    */
   private double getSizeHint() {
 
-    System.out.println(axisTick.getTickLabels());
-
     if (direction == Direction.X) { // X-Axis
 
       // Axis title
@@ -249,12 +248,12 @@ public class Axis implements ChartPart {
       if (getChartPainter().getStyleManager().isXAxisTicksVisible()) {
         String tickLabel =
             getChartPainter().getAxisPair().getXAxis().getAxisType().equals(AxisType.Date) ? new SimpleDateFormat(getChartPainter().getStyleManager().getDatePattern()).format(new Date()) : "0";
-        TextLayout textLayout = new TextLayout(tickLabel, getChartPainter().getStyleManager().getAxisTickLabelsFont(), new FontRenderContext(null, true, false));
-        AffineTransform rot =
-            getChartPainter().getStyleManager().getXAxisLabelRotation() == 0 ? null : AffineTransform.getRotateInstance(-Math.toRadians(getChartPainter().getStyleManager().getXAxisLabelRotation()));
-        Shape shape = textLayout.getOutline(rot);
-        Rectangle2D rectangle = shape.getBounds();
-        axisTickLabelsHeight = rectangle.getHeight() + getChartPainter().getStyleManager().getAxisTickPadding() + getChartPainter().getStyleManager().getAxisTickMarkLength();
+            TextLayout textLayout = new TextLayout(tickLabel, getChartPainter().getStyleManager().getAxisTickLabelsFont(), new FontRenderContext(null, true, false));
+            AffineTransform rot =
+                getChartPainter().getStyleManager().getXAxisLabelRotation() == 0 ? null : AffineTransform.getRotateInstance(-Math.toRadians(getChartPainter().getStyleManager().getXAxisLabelRotation()));
+            Shape shape = textLayout.getOutline(rot);
+            Rectangle2D rectangle = shape.getBounds();
+            axisTickLabelsHeight = rectangle.getHeight() + getChartPainter().getStyleManager().getAxisTickPadding() + getChartPainter().getStyleManager().getAxisTickMarkLength();
       }
       return titleHeight + axisTickLabelsHeight;
     }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
index 0488e045f6f6e7ba96b2bff34296879169b236b8..a0f739bb5d5b0abf5e52c6d900467f18bf27ee37 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
@@ -15,7 +15,6 @@
  */
 package com.xeiam.xchart.internal.chartpart;
 
-import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.geom.Rectangle2D;
 import java.util.List;
@@ -64,10 +63,12 @@ public class AxisTick implements ChartPart {
   public void paint(Graphics2D g) {
 
     double workingSpace = 0.0;
+    // Y-Axis
     if (axis.getDirection() == Axis.Direction.Y) {
       workingSpace = axis.getPaintZone().getHeight(); // number of pixels the axis has to work with for drawing AxisTicks
       // System.out.println("workingspace= " + workingSpace);
     }
+    // X-Axis
     else if (axis.getDirection() == Axis.Direction.X) {
       workingSpace = axis.getPaintZone().getWidth(); // number of pixels the axis has to work with for drawing AxisTicks
       // System.out.println("workingspace= " + workingSpace);
@@ -116,8 +117,8 @@ public class AxisTick implements ChartPart {
 
       );
 
-      g.setColor(Color.red);
-      g.draw(bounds);
+      // g.setColor(Color.red);
+      // g.draw(bounds);
 
     }
     else if (axis.getDirection() == Axis.Direction.X && getChartPainter().getStyleManager().isXAxisTicksVisible()) {
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java
index fa0364ab824d8a32f9e80311c27c0fb5951df762..2f7447739b636fa01d1ecf42f3286ee5aad12d5b 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickCalculator.java
@@ -102,13 +102,8 @@ public abstract class AxisTickCalculator {
 
     // System.out.println("******");
 
-    // double firstPosition = minValue - (minValue % gridStep) + gridStep;
     double absoluteMinValue = minValue <= maxValue ? minValue : maxValue; 
     double firstPosition = absoluteMinValue - (absoluteMinValue % gridStep) - gridStep;
-    //
-    // if ((firstPosition - minValue) > gridStep) {
-    // firstPosition = minValue - (minValue % gridStep);
-    // }
     return firstPosition;
   }
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java
index ee4d0554887fa174240b6ec0d213f9cadab5267a..40b6d956e911a403f02e188758ccddbb559504bd 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickDateCalculator.java
@@ -70,11 +70,11 @@ public class AxisTickDateCalculator extends AxisTickCalculator {
     double firstPosition = getFirstPosition(gridStep);
 
     // generate all tickLabels and tickLocations from the first to last position
-    for (double tickPosition = firstPosition; tickPosition <= maxValue + 2 * gridStep; tickPosition = tickPosition + gridStep) {
+    for (double value = firstPosition; value <= maxValue + 2 * gridStep; value = value + gridStep) {
 
-      tickLabels.add(dateFormatter.formatDate(tickPosition, timeUnit));
+      tickLabels.add(dateFormatter.formatDate(value, timeUnit));
       // here we convert tickPosition finally to plot space, i.e. pixels
-      double tickLabelPosition = margin + ((tickPosition - minValue) / (maxValue - minValue) * tickSpace);
+      double tickLabelPosition = margin + ((value - minValue) / (maxValue - minValue) * tickSpace);
       tickLocations.add(tickLabelPosition);
     }
   }
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 18ab2640884003326eb11d3950fd8cbe683e9df5..e0ac375ea4cac5d3072fc7e915540b4ca488fb98 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
@@ -73,15 +73,15 @@ public class AxisTickNumericalCalculator extends AxisTickCalculator {
 
     // generate all tickLabels and tickLocations from the first to last position
     double absoluteMaxValue = minValue <= maxValue ? maxValue : minValue;
-    for (BigDecimal tickPosition = cleanedFirstPosition; tickPosition.compareTo(BigDecimal.valueOf(absoluteMaxValue + 2 * cleanedGridStep.doubleValue())) < 0; tickPosition = tickPosition.add(cleanedGridStep)) {
+    for (BigDecimal value = cleanedFirstPosition; value.compareTo(BigDecimal.valueOf(absoluteMaxValue + 2 * cleanedGridStep.doubleValue())) < 0; value = value.add(cleanedGridStep)) {
 
       // System.out.println(tickPosition);
-      String tickLabel = numberFormatter.formatNumber(tickPosition, minValue, maxValue, axisDirection);
+      String tickLabel = numberFormatter.formatNumber(value, minValue, maxValue, axisDirection);
       // System.out.println(tickLabel);
-
       tickLabels.add(tickLabel);
+
       // here we convert tickPosition finally to plot space, i.e. pixels
-      double tickLabelPosition = margin + ((tickPosition.doubleValue() - minValue) / (maxValue - minValue) * tickSpace);
+      double tickLabelPosition = margin + ((value.doubleValue() - minValue) / (maxValue - minValue) * tickSpace);
       tickLocations.add(tickLabelPosition);
     }
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java
index a19fb2f7aba49d8a1b1717ba1773c3351417e776..8242dbbf1b758dd37a139863df9348ed81cde884 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartPainter.java
@@ -109,6 +109,7 @@ public class ChartPainter {
 
     axisPair.paint(g);
     plot.paint(g);
+    // TODO why not just paint them first and skip the size hinting?
     chartTitle.paint(g);
     chartLegend.paint(g);