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 49ac9f0fbaf375f71b1cb249064ef9bf91d8e8f8..e3e91564be8b8c6f69b842659d2b45d4dc17858a 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
@@ -179,7 +179,7 @@ public class Axis implements ChartPart {
 
       xOffset = paintZone.getX();
       yOffset = paintZone.getY();
-      width = (getChartPainter().getStyleManager().isYAxisTitleVisible() ? axisTitle.getBounds().getWidth() : 0) + (int) axisTick.getBounds().getWidth();
+      width = (getChartPainter().getStyleManager().isYAxisTitleVisible() ? axisTitle.getBounds().getWidth() : 0) + axisTick.getBounds().getWidth();
       height = paintZone.getHeight();
       bounds = new Rectangle2D.Double(xOffset, yOffset, width, height);
 
@@ -191,9 +191,9 @@ public class Axis implements ChartPart {
       // calculate paint zone
       // |____________________|
 
-      double xOffset = (int) (axisPair.getyAxis().getBounds().getWidth() + (getChartPainter().getStyleManager().isYAxisTicksVisible() ? getChartPainter().getStyleManager().getPlotPadding() : 0) + getChartPainter()
-          .getStyleManager().getChartPadding());
-      double yOffset = (int) (axisPair.getyAxis().getBounds().getY() + axisPair.getyAxis().getBounds().getHeight() + getChartPainter().getStyleManager().getPlotPadding());
+      double xOffset = axisPair.getyAxis().getBounds().getWidth() + (getChartPainter().getStyleManager().isYAxisTicksVisible() ? getChartPainter().getStyleManager().getPlotPadding() : 0)
+          + getChartPainter().getStyleManager().getChartPadding();
+      double yOffset = axisPair.getyAxis().getBounds().getY() + axisPair.getyAxis().getBounds().getHeight() + getChartPainter().getStyleManager().getPlotPadding();
 
       double chartLegendWidth = 0;
       if (getChartPainter().getStyleManager().getLegendPosition() == LegendPosition.OutsideE) {
@@ -231,7 +231,7 @@ public class Axis implements ChartPart {
       xOffset = paintZone.getX();
       yOffset = paintZone.getY();
       width = paintZone.getWidth();
-      height = (getChartPainter().getStyleManager().isXAxisTitleVisible() ? axisTitle.getBounds().getHeight() : 0) + (int) axisTick.getBounds().getHeight();
+      height = (getChartPainter().getStyleManager().isXAxisTitleVisible() ? axisTitle.getBounds().getHeight() : 0) + axisTick.getBounds().getHeight();
       bounds = new Rectangle2D.Double(xOffset, yOffset, width, height);
       // g.setColor(Color.yellow);
       // g.draw(bounds);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
index d91f18a31a70412c9b63538eeed184762189dfb2..14d2cba906588f7e8efcd697d6cbabc2805936ac 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
@@ -73,20 +73,20 @@ public class AxisTickLabels implements ChartPart {
           layout.draw(g, (float) xOffset, (float) (yOffset + axisTick.getAxis().getPaintZone().getHeight() - tickLocation + tickLabelBounds.getHeight() / 2.0));
 
           if (tickLabelBounds.getWidth() > maxTickLabelWidth) {
-            maxTickLabelWidth = (int) tickLabelBounds.getWidth();
+            maxTickLabelWidth = tickLabelBounds.getWidth();
           }
         }
       }
 
       // bounds
-      bounds = new Rectangle2D.Double(xOffset, yOffset, maxTickLabelWidth, (int) axisTick.getAxis().getPaintZone().getHeight());
+      bounds = new Rectangle2D.Double(xOffset, yOffset, maxTickLabelWidth, axisTick.getAxis().getPaintZone().getHeight());
       // g.setColor(Color.blue);
       // g.draw(bounds);
 
     } else if (axisTick.getAxis().getDirection() == Axis.Direction.X && getChartPainter().getStyleManager().isXAxisTicksVisible()) { // X-Axis
 
-      double xOffset = (int) (axisTick.getAxis().getPaintZone().getX());
-      double yOffset = (int) (axisTick.getAxis().getAxisTitle().getBounds().getY());
+      double xOffset = axisTick.getAxis().getPaintZone().getX();
+      double yOffset = axisTick.getAxis().getAxisTitle().getBounds().getY();
       double maxTickLabelHeight = 0;
       for (int i = 0; i < axisTick.getTickLabels().size(); i++) {
 
@@ -100,7 +100,7 @@ public class AxisTickLabels implements ChartPart {
           layout.draw(g, (float) (xOffset + tickLocation - tickLabelBounds.getWidth() / 2.0), (float) yOffset);
 
           if (tickLabelBounds.getHeight() > maxTickLabelHeight) {
-            maxTickLabelHeight = (int) tickLabelBounds.getHeight();
+            maxTickLabelHeight = tickLabelBounds.getHeight();
           }
         }
       }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
index e876d4ca65701f7d65ec677b08061f5707f43104..cdeedc3fc04bd19cf0829ace0aedd2c9c725eb1a 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
@@ -65,15 +65,10 @@ public class AxisTickMarks implements ChartPart {
 
           int tickLocation = axisTick.getTickLocations().get(i);
 
-          // g.setColor(getChart().getStyleManager().getChartBordersColor());
-          // g.setStroke(stroke);
           Shape line = new Line2D.Double(xOffset, yOffset + axisTick.getAxis().getPaintZone().getHeight() - tickLocation, xOffset + getChartPainter().getStyleManager().getAxisTickMarkLength(),
               yOffset + axisTick.getAxis().getPaintZone().getHeight() - tickLocation);
           g.draw(line);
 
-          // g.drawLine(xOffset, yOffset + (int) (axisTick.getAxis().getPaintZone().getHeight() - tickLocation), xOffset + getChartPainter().getStyleManager().getAxisTickMarkLength(), yOffset
-          // + (int) (axisTick.getAxis().getPaintZone().getHeight() - tickLocation));
-
         }
       }
       // Line
@@ -83,19 +78,16 @@ public class AxisTickMarks implements ChartPart {
             + axisTick.getAxis().getPaintZone().getHeight());
         g.draw(line);
 
-        // g.drawLine(xOffset + getChartPainter().getStyleManager().getAxisTickMarkLength(), yOffset, xOffset + getChartPainter().getStyleManager().getAxisTickMarkLength(), yOffset
-        // + (int) axisTick.getAxis().getPaintZone().getHeight());
       }
 
       // bounds
-      bounds = new Rectangle2D.Double(xOffset, yOffset, getChartPainter().getStyleManager().getAxisTickMarkLength(), (int) axisTick.getAxis().getPaintZone().getHeight());
+      bounds = new Rectangle2D.Double(xOffset, yOffset, getChartPainter().getStyleManager().getAxisTickMarkLength(), axisTick.getAxis().getPaintZone().getHeight());
       // g.setColor(Color.yellow);
       // g.draw(bounds);
 
     } else if (axisTick.getAxis().getDirection() == Axis.Direction.X && getChartPainter().getStyleManager().isXAxisTicksVisible()) { // X-Axis
 
       double xOffset = axisTick.getAxis().getPaintZone().getX();
-      // int yOffset = (int) (axisTick.getAxisTickLabels().getBounds().getY() - getChart().getStyleManager().getAxisTickPadding());
       double yOffset = axisTick.getAxisTickLabels().getBounds().getY() - getChartPainter().getStyleManager().getAxisTickPadding();
 
       // tick marks
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
index 77ca627aa5e5c731ee5db4daba391ba7ac97e6a8..0e68beace09213e1e50a17ad95a9a9b185794ebe 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
@@ -97,8 +97,8 @@ public class ChartTitle implements ChartPart {
       if (chartPainter.getStyleManager().isChartTitleBoxVisible()) {
 
         // paint the chart title box
-        int chartTitleBoxWidth = (int) chartPainter.getPlot().getBounds().getWidth();
-        int chartTitleBoxHeight = (int) (rectangle.getHeight() + 2 * chartPainter.getStyleManager().getChartTitlePadding());
+        double chartTitleBoxWidth = chartPainter.getPlot().getBounds().getWidth();
+        double chartTitleBoxHeight = rectangle.getHeight() + 2 * chartPainter.getStyleManager().getChartTitlePadding();
 
         g.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));
         Shape rect = new Rectangle2D.Double(xOffset, yOffset, chartTitleBoxWidth, chartTitleBoxHeight);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
index 89de73a87573103f05c704f5bff9126eea0bee16..0f56d50e7fa21a644ea080b235f1d9cfaf725e27 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
@@ -92,7 +92,7 @@ public class Legend implements ChartPart {
       // determine legend content width
       double legendContentWidth = 0;
       if (getChartPainter().getStyleManager().getChartType() != ChartType.Bar) {
-        legendContentWidth = (int) (3.0 * Marker.SIZE + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth);
+        legendContentWidth = 3.0 * Marker.SIZE + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth;
       } else {
         legendContentWidth = BOX_SIZE + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth;
       }
@@ -173,7 +173,7 @@ public class Legend implements ChartPart {
           // paint marker
           if (series.getMarker() != null) {
             g.setColor(series.getMarkerColor());
-            series.getMarker().paint(g, (int) (startx + (Marker.SIZE * 1.5)), (int) (starty + maxContentHeight / 2.0));
+            series.getMarker().paint(g, startx + (Marker.SIZE * 1.5), starty + maxContentHeight / 2.0);
           }
         } else {
           // paint little box
@@ -194,7 +194,7 @@ public class Legend implements ChartPart {
         } else {
           layout.draw(g, (float) (startx + BOX_SIZE + chartPainter.getStyleManager().getLegendPadding()), (float) (starty + (maxContentHeight + layout.getBounds().getHeight()) / 2.0));
         }
-        starty = (int) (starty + maxContentHeight + chartPainter.getStyleManager().getLegendPadding());
+        starty = starty + maxContentHeight + chartPainter.getStyleManager().getLegendPadding();
       }
 
       // bounds
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
index 493d3aa48ccf75a239da08df958cc025276db816..27cccf26c37daa4e8a56394f5ef6ef6688ed0d32 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentLineChart.java
@@ -143,17 +143,17 @@ public class PlotContentLineChart extends PlotContent {
           y = new BigDecimal(yOrig.doubleValue());
         }
 
-        int xTransform = (int) (xLeftMargin + (x.subtract(xMin).doubleValue() / xMax.subtract(xMin).doubleValue() * xTickSpace));
-        int yTransform = (int) (bounds.getHeight() - (yTopMargin + y.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace));
+        double xTransform = xLeftMargin + (x.subtract(xMin).doubleValue() / xMax.subtract(xMin).doubleValue() * xTickSpace);
+        double yTransform = bounds.getHeight() - (yTopMargin + y.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace);
 
         // a check if all x data are the exact same values
         if (Math.abs(xMax.subtract(xMin).doubleValue()) / 5 == 0.0) {
-          xTransform = (int) (bounds.getWidth() / 2.0);
+          xTransform = bounds.getWidth() / 2.0;
         }
 
         // a check if all y data are the exact same values
         if (Math.abs(yMax.subtract(yMin).doubleValue()) / 5 == 0.0) {
-          yTransform = (int) (bounds.getHeight() / 2.0);
+          yTransform = bounds.getHeight() / 2.0;
         }
 
         double xOffset = bounds.getX() + xTransform - 1;
@@ -176,7 +176,7 @@ public class PlotContentLineChart extends PlotContent {
         if (getChartPainter().getStyleManager().getChartType() == ChartType.Area) {
           if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) {
             g.setColor(series.getStrokeColor());
-            int yBottomOfArea = (int) (bounds.getY() + bounds.getHeight() - yTopMargin + 1);
+            double yBottomOfArea = bounds.getY() + bounds.getHeight() - yTopMargin + 1;
 
             Path2D.Double path = new Path2D.Double();
             path.moveTo(previousX, previousY);
@@ -210,8 +210,8 @@ public class PlotContentLineChart extends PlotContent {
           } else {
             topValue = y.add(eb);
           }
-          int topEBTransform = (int) (bounds.getHeight() - (yTopMargin + topValue.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace));
-          int topEBOffset = (int) (bounds.getY() + topEBTransform);
+          double topEBTransform = bounds.getHeight() - (yTopMargin + topValue.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace);
+          double topEBOffset = bounds.getY() + topEBTransform;
 
           BigDecimal bottomValue = null;
           if (getChartPainter().getStyleManager().isYAxisLogarithmic()) {
@@ -221,8 +221,8 @@ public class PlotContentLineChart extends PlotContent {
           } else {
             bottomValue = y.subtract(eb);
           }
-          int bottomEBTransform = (int) (bounds.getHeight() - (yTopMargin + bottomValue.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace));
-          int bottomEBOffset = (int) (bounds.getY() + bottomEBTransform);
+          double bottomEBTransform = bounds.getHeight() - (yTopMargin + bottomValue.subtract(yMin).doubleValue() / yMax.subtract(yMin).doubleValue() * yTickSpace);
+          double bottomEBOffset = bounds.getY() + bottomEBTransform;
 
           Shape line = new Line2D.Double(xOffset, topEBOffset, xOffset, bottomEBOffset);
           g.draw(line);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java
index 1cde8841717cf96d03d7c0711c371dab5e636914..ef5ceb84c2e2de04cd6c4150beea8106a1c67982 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotSurface.java
@@ -70,15 +70,15 @@ public class PlotSurface implements ChartPart {
       List<Integer> yAxisTickLocations = getChartPainter().getAxisPair().getyAxis().getAxisTick().getTickLocations();
       for (int i = 0; i < yAxisTickLocations.size(); i++) {
 
-        int tickLocation = yAxisTickLocations.get(i);
-        int yOffset = (int) (bounds.getY() + bounds.getHeight() - tickLocation);
+        double tickLocation = yAxisTickLocations.get(i);
+        double yOffset = bounds.getY() + bounds.getHeight() - tickLocation;
 
         // draw lines
         if (getChartPainter().getStyleManager().isPlotGridLinesVisible()) {
 
           g.setColor(getChartPainter().getStyleManager().getPlotGridLinesColor());
           g.setStroke(getChartPainter().getStyleManager().getPlotGridLinesStroke());
-          Shape line = new Line2D.Double((int) bounds.getX(), yOffset, bounds.getX() + bounds.getWidth() - 2, yOffset);
+          Shape line = new Line2D.Double( bounds.getX(), yOffset, bounds.getX() + bounds.getWidth() - 2, yOffset);
           g.draw(line);
         }
         // tick marks
@@ -100,8 +100,8 @@ public class PlotSurface implements ChartPart {
         List<Integer> xAxisTickLocations = getChartPainter().getAxisPair().getxAxis().getAxisTick().getTickLocations();
         for (int i = 0; i < xAxisTickLocations.size(); i++) {
 
-          int tickLocation = xAxisTickLocations.get(i);
-          int xOffset = (int) (bounds.getX() + tickLocation - 1);
+          double tickLocation = xAxisTickLocations.get(i);
+          double xOffset = bounds.getX() + tickLocation - 1;
 
           // draw lines
           if (getChartPainter().getStyleManager().isPlotGridLinesVisible()) {
@@ -117,9 +117,9 @@ public class PlotSurface implements ChartPart {
             g.setColor(getChartPainter().getStyleManager().getAxisTickMarksColor());
             g.setStroke(getChartPainter().getStyleManager().getAxisTickMarksStroke());
 
-            Shape line = new Line2D.Double(xOffset, (int) (bounds.getY()), xOffset, (int) (bounds.getY()) + getChartPainter().getStyleManager().getAxisTickMarkLength());
+            Shape line = new Line2D.Double(xOffset, bounds.getY(), xOffset, bounds.getY() + getChartPainter().getStyleManager().getAxisTickMarkLength());
             g.draw(line);
-            line = new Line2D.Double(xOffset, (int) (bounds.getY() + bounds.getHeight() - 1), xOffset, (int) (bounds.getY() + bounds.getHeight() - 1)
+            line = new Line2D.Double(xOffset, bounds.getY() + bounds.getHeight() - 1, xOffset, bounds.getY() + bounds.getHeight() - 1
                 - getChartPainter().getStyleManager().getAxisTickMarkLength());
             g.draw(line);
           }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java
index cac88797726e6d8ca8c0a1b6b692868866b59765..05bd0edb2581d0162e0cac75a0ed5fbe7dd8e8ad 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java
@@ -27,8 +27,8 @@ public abstract class Marker {
 
   public static final double SIZE = 8;
 
-  public static final double X_OFFSET = (int) (-1.0 * (SIZE / 2.0));
-  public static final double Y_OFFSET = (int) (-1.0 * (SIZE / 2.0));
+  public static final double X_OFFSET = -1.0 * (SIZE / 2.0);
+  public static final double Y_OFFSET = -1.0 * (SIZE / 2.0);
 
   public abstract void paint(Graphics2D g, double xOffset, double yOffset);
 }