diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java
index 75dbf9e08e471987e7a54e2a5ae6950caf060ab5..e88d391b52c9461449f29fc49e3f353517c2e878 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java
@@ -17,6 +17,8 @@ package com.xeiam.xchart.standalone;
 
 import com.xeiam.xchart.BitmapEncoder;
 import com.xeiam.xchart.Chart;
+import com.xeiam.xchart.Series;
+import com.xeiam.xchart.SeriesMarker;
 
 /**
  * Creates a simple Chart and saves it as a PNG and JPEG image file.
@@ -32,7 +34,8 @@ public class Example1 {
     chart.setChartTitle("Sample Chart");
     chart.setXAxisTitle("X");
     chart.setYAxisTitle("Y");
-    chart.addSeries("y(x)", null, yData);
+    Series series = chart.addSeries("y(x)", null, yData);
+    series.setMarker(SeriesMarker.CIRCLE);
 
     BitmapEncoder.savePNG(chart, "./Sample_Chart.png");
     BitmapEncoder.savePNGWithDPI(chart, "./Sample_Chart_300_DPI.png", 300);
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java
index e146f43a1aa5dfc285bf051f7f1c27a761502ce7..c41ad4f5895a48f4c88635612bce0c670d86118d 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java
@@ -28,7 +28,7 @@ public class Circle extends Marker {
   public void paint(Graphics2D g, double xOffset, double yOffset) {
 
     g.setStroke(stroke);
-    Shape circle = new Ellipse2D.Double(xOffset + Marker.X_OFFSET, yOffset + Marker.Y_OFFSET, Marker.SIZE, Marker.SIZE);
+    Shape circle = new Ellipse2D.Double(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE, Marker.SIZE, Marker.SIZE);
     g.fill(circle);
 
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java
index 5fb4cb1f45dc3ba0f2916933f4d826e88413a042..efa7298c46befd4ff8cb869eaa8127e7bd1bb9be 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java
@@ -29,13 +29,13 @@ public class Diamond extends Marker {
     g.setStroke(stroke);
 
     // Make a diamond
-    double halfSize = Math.ceil((Marker.SIZE + 3) / 2.0);
+    double diamondHalfSize = Marker.HALF_SIZE * 1.3;
 
     Path2D.Double path = new Path2D.Double();
-    path.moveTo(xOffset - halfSize, yOffset - halfSize + halfSize);
-    path.lineTo(xOffset - halfSize + halfSize, yOffset - halfSize + Marker.SIZE + 3);
-    path.lineTo(xOffset - halfSize + Marker.SIZE + 3, yOffset - halfSize + halfSize);
-    path.lineTo(xOffset - halfSize + halfSize, yOffset - halfSize);
+    path.moveTo(xOffset - diamondHalfSize, yOffset);
+    path.lineTo(xOffset, yOffset - diamondHalfSize);
+    path.lineTo(xOffset + diamondHalfSize, yOffset);
+    path.lineTo(xOffset, yOffset + diamondHalfSize);
     path.closePath();
     g.fill(path);
 
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 05bd0edb2581d0162e0cac75a0ed5fbe7dd8e8ad..930894be41e2d46512f94b24e5adf0de9629aff6 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,7 @@ public abstract class Marker {
 
   public static final double SIZE = 8;
 
-  public static final double X_OFFSET = -1.0 * (SIZE / 2.0);
-  public static final double Y_OFFSET = -1.0 * (SIZE / 2.0);
+  public static final double HALF_SIZE = SIZE / 2.0;
 
   public abstract void paint(Graphics2D g, double xOffset, double yOffset);
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java
index 84dbc41d69494602c1ba0dac4d3f96fc916c1213..ba506d6b946d3c96e73fd9d14932ab71c6af4d88 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java
@@ -28,7 +28,7 @@ public class Square extends Marker {
   public void paint(Graphics2D g, double xOffset, double yOffset) {
 
     g.setStroke(stroke);
-    Shape square = new Rectangle2D.Double(xOffset + Marker.X_OFFSET, yOffset + Marker.Y_OFFSET, Marker.SIZE, Marker.SIZE);
+    Shape square = new Rectangle2D.Double(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE, Marker.SIZE, Marker.SIZE);
     g.fill(square);
 
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java
index 3a0e05378064caf087ad4c1433053528dcc1af64..88adbb0413c47a5f7550d4ded03e68f315cfa060 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java
@@ -29,12 +29,10 @@ public class TriangleDown extends Marker {
     g.setStroke(stroke);
 
     // Make a triangle
-    double halfSize = Math.ceil((Marker.SIZE + 1) / 2.0);
-
     Path2D.Double path = new Path2D.Double();
-    path.moveTo(xOffset - halfSize + 0, 1 + yOffset - halfSize + 0);
-    path.lineTo(xOffset - halfSize + halfSize, 1 + yOffset - halfSize + Marker.SIZE + 1);
-    path.lineTo(xOffset - halfSize + Marker.SIZE + 1, 1 + yOffset - halfSize + 0);
+    path.moveTo(xOffset - Marker.HALF_SIZE, 1 + yOffset - Marker.HALF_SIZE);
+    path.lineTo(xOffset, 1 + yOffset - Marker.HALF_SIZE + Marker.SIZE + 1);
+    path.lineTo(xOffset - Marker.HALF_SIZE + Marker.SIZE + 1, 1 + yOffset - Marker.HALF_SIZE);
     path.closePath();
     g.fill(path);
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java
index 21d8358c2e4cb7d17d1fc4921b4e54e7cd490f4a..add968f407ee79036769b588936335bbdfed0907 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java
@@ -29,12 +29,10 @@ public class TriangleUp extends Marker {
     g.setStroke(stroke);
 
     // Make a triangle
-    double halfSize = Math.ceil((Marker.SIZE + 1) / 2.0);
-
     Path2D.Double path = new Path2D.Double();
-    path.moveTo(xOffset - halfSize, yOffset - halfSize + Marker.SIZE + 1);
-    path.lineTo(xOffset - halfSize + Marker.SIZE + 1, yOffset - halfSize + Marker.SIZE + 1);
-    path.lineTo(xOffset - halfSize + halfSize, yOffset - halfSize + 0);
+    path.moveTo(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE + Marker.SIZE + 1);
+    path.lineTo(xOffset - Marker.HALF_SIZE + Marker.SIZE + 1, yOffset - Marker.HALF_SIZE + Marker.SIZE + 1);
+    path.lineTo(xOffset, yOffset - Marker.HALF_SIZE);
     path.closePath();
     g.fill(path);