diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java
index e163b67852d693c58f0f1216cc7457fc4560953c..78bc5e9f678d9dce75184bcdd0e39a72ba2fc3d1 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickBarChartCalculator.java
@@ -79,8 +79,9 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
 
     int numCategories = categories.size();
 
-    int gridStep = (int) (tickSpace / (double) numCategories);
-    int firstPosition = (int) (gridStep / 2.0);
+    double gridStep = (tickSpace / (double) numCategories);
+    // int firstPosition = (int) (gridStep / 2.0);
+    double firstPosition = getFirstPosition(gridStep);
 
     // generate all tickLabels and tickLocations from the first to last position
     NumberFormatter numberFormatter = null;
@@ -106,7 +107,7 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
       else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.String) {
         tickLabels.add(category.toString());
       }
-      int tickLabelPosition = margin + firstPosition + gridStep * counter++;
+      int tickLabelPosition = (int) (margin + firstPosition + gridStep * counter++);
       tickLocations.add(tickLabelPosition);
     }
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java
index 7fc2e0e3e3d0d7d826e7f7713c9a8727dbe34465..808964cc6507dd58275553e2bc6473107680a920 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java
@@ -69,7 +69,7 @@ public class PlotContentBarChart extends PlotContent {
       }
     }
     int numBars = categories.size();
-    int gridStep = (int) (xTickSpace / (double) numBars);
+    double gridStep = xTickSpace / (double) numBars;
 
     // plot series
     int seriesCounter = 0;