diff --git a/README.md b/README.md
index 839ab65f5bb227b611e925c0569e0471e18c15d5..fba36b1e01719898fb55a31660564431606ba7f9 100644
--- a/README.md
+++ b/README.md
@@ -49,10 +49,13 @@ Now go ahead and [study some more examples](http://xeiam.com/xchart_examplecode.
 * Real-time charts
 
 ## Getting Started
+
 ### Non-Maven
+
 Download Jar: http://xeiam.com/xchart_changelog.jsp
 
 ### Maven
+
 The XChart release artifacts are hosted on Maven Central.
 
 Add the XChart library as a dependency to your pom.xml file:
@@ -104,3 +107,6 @@ Please report any bugs or submit feature requests to [XChart's Github issue trac
 ## Donations
 1PrZHiJorAw7RQrjP9CJgtPuqr6fU65PKt
 
+## Release Information
+
+We will announce new releases on our [Twitter page](https://twitter.com/Xeiam).
\ No newline at end of file
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example0.java b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example0.java
index 4e0a6fbecd27e419f40e0ea4eb920d75baa6c180..c50d3d0696cb65460526189f54c7837a9d58b4b9 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example0.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example0.java
@@ -15,7 +15,6 @@
  */
 package com.xeiam.xchart.standalone;
 
-import com.xeiam.xchart.BitmapEncoder;
 import com.xeiam.xchart.Chart;
 import com.xeiam.xchart.QuickChart;
 import com.xeiam.xchart.SwingWrapper;
@@ -36,9 +35,5 @@ public class Example0 {
     // Show it
     new SwingWrapper(chart).displayChart();
 
-    // Save it
-    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/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
index 5b50fa7965ded5c1a0b952a828130327d76e5969..8d20a5c6390e292a12a02a470b80c21d1b2e8906 100644
--- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
@@ -129,7 +129,10 @@ public class StyleManager {
 
   // Bar Charts ///////////////////////////////
   private double barWidthPercentage;
-  private boolean barsOverlapped;
+  private boolean isBarsOverlapped;
+
+  // Line, Scatter, Area Charts ///////////////////////////////
+  private int markerSize;
 
   // Error Bars ///////////////////////////////
   private Color errorBarsColor;
@@ -211,7 +214,11 @@ public class StyleManager {
 
     // Bar Charts ///////////////////////////////
     barWidthPercentage = theme.getBarWidthPercentage();
-    barsOverlapped = theme.barsOverlapped();
+    isBarsOverlapped = theme.isBarsOverlapped();
+
+    // Line, Scatter, Area Charts ///////////////////////////////
+
+    markerSize = theme.getMarkerSize();
 
     // Error Bars ///////////////////////////////
     errorBarsColor = theme.getErrorBarsColor();
@@ -994,16 +1001,33 @@ public class StyleManager {
   /**
    * set whether or no bars are overlapped. Otherwise they are places side-by-side
    * 
-   * @param barsOverlapped
+   * @param isBarsOverlapped
+   */
+  public void setBarsOverlapped(boolean isBarsOverlapped) {
+
+    this.isBarsOverlapped = isBarsOverlapped;
+  }
+
+  public boolean isBarsOverlapped() {
+
+    return isBarsOverlapped;
+  }
+
+  // Line, Scatter, Area Charts ///////////////////////////////
+
+  /**
+   * Sets the size of the markers in pixels
+   * 
+   * @param markerSize
    */
-  public void setBarsOverlapped(boolean barsOverlapped) {
+  public void setMarkerSize(int markerSize) {
 
-    this.barsOverlapped = barsOverlapped;
+    this.markerSize = markerSize;
   }
 
-  public boolean barsOverlapped() {
+  public int getMarkerSize() {
 
-    return barsOverlapped;
+    return markerSize;
   }
 
   // Error Bars ///////////////////////////////
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 1d0f74a843fa91cb4872ecee1f99ac1cb0525b01..70bc61698535c2315192c8170570fb62db24fa3e 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
@@ -29,7 +29,6 @@ import java.util.Map;
 import com.xeiam.xchart.Series;
 import com.xeiam.xchart.StyleManager;
 import com.xeiam.xchart.StyleManager.ChartType;
-import com.xeiam.xchart.internal.markers.Marker;
 
 /**
  * @author timmolter
@@ -90,7 +89,7 @@ public class Legend implements ChartPart {
         legendTextContentMaxWidth = Math.max(legendTextContentMaxWidth, entry.getValue().getWidth());
       }
 
-      blockHeight = Math.max(blockHeight, isBar ? BOX_SIZE : Marker.SIZE);
+      blockHeight = Math.max(blockHeight, isBar ? BOX_SIZE : getChartPainter().getStyleManager().getMarkerSize());
 
       legendTextContentMaxHeight = Math.max(legendTextContentMaxHeight, blockHeight);
       legendContentHeight += blockHeight;
@@ -133,8 +132,9 @@ public class Legend implements ChartPart {
 
     StyleManager styleManager = getChartPainter().getStyleManager();
 
-    if (!styleManager.isLegendVisible())
+    if (!styleManager.isLegendVisible()) {
       return;
+    }
 
     final double[] sizeHint = getSizeHint(g);
 
@@ -190,8 +190,9 @@ public class Legend implements ChartPart {
     for (Series series : chartPainter.getAxisPair().getSeriesMap().values()) {
       List<Map.Entry<String, Rectangle2D>> seriesBounds = getSeriesBounds(series, g);
       float blockHeight = 0;
-      for (Map.Entry<String, Rectangle2D> entry : seriesBounds)
+      for (Map.Entry<String, Rectangle2D> entry : seriesBounds) {
         blockHeight += entry.getValue().getHeight();
+      }
 
       if (styleManager.getChartType() != ChartType.Bar) {
         // paint line
@@ -205,7 +206,7 @@ public class Legend implements ChartPart {
         // paint marker
         if (series.getMarker() != null) {
           g.setColor(series.getMarkerColor());
-          series.getMarker().paint(g, startx + styleManager.getLegendSeriesLineLength() / 2.0, starty + blockHeight / 2.0);
+          series.getMarker().paint(g, startx + styleManager.getLegendSeriesLineLength() / 2.0, starty + blockHeight / 2.0, getChartPainter().getStyleManager().getMarkerSize());
         }
       }
       else {
@@ -227,7 +228,7 @@ public class Legend implements ChartPart {
           g.drawString(entry.getKey(), x, (float) (starty + entry.getValue().getHeight()) + itemOffsetY);
           itemOffsetY += entry.getValue().getHeight();
         }
-        itemOffsetY = (float) Math.max(itemOffsetY, Marker.SIZE);
+        itemOffsetY = Math.max(itemOffsetY, getChartPainter().getStyleManager().getMarkerSize());
         starty += blockHeight + fontMetrics.getDescent();
       }
       else {
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 318e793c51f523ea17483a561aaf39cad05152b5..e657735472bba3810b3797ae6dd3f338db02a56a 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
@@ -170,7 +170,7 @@ public class PlotContentBarChart extends PlotContent {
         boolean isOverlap = true;
         double xOffset;
         double barWidth;
-        if (getChartPainter().getStyleManager().barsOverlapped()) {
+        if (getChartPainter().getStyleManager().isBarsOverlapped()) {
           double barWidthPercentage = getChartPainter().getStyleManager().getBarWidthPercentage();
           barWidth = gridStep * barWidthPercentage;
           double barMargin = gridStep * (1 - barWidthPercentage) / 2;
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 d08eebb7f98c40cf9e027dbf14ff8f7e5d3ef69e..f7783afef9d16177b5f7e988541979f8da9d79e5 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
@@ -205,7 +205,7 @@ public class PlotContentLineChart extends PlotContent {
         // paint marker
         if (series.getMarker() != null) {
           g.setColor(series.getMarkerColor());
-          series.getMarker().paint(g, xOffset, yOffset);
+          series.getMarker().paint(g, xOffset, yOffset, getChartPainter().getStyleManager().getMarkerSize());
         }
 
         // paint errorbars
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 b3cd237d7cb2d3c483343b72a24f3519598638d6..489f7abf0d6efaa440ffc9f0cb97ee25c087dac2 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
@@ -25,10 +25,11 @@ import java.awt.geom.Ellipse2D;
 public class Circle extends Marker {
 
   @Override
-  public void paint(Graphics2D g, double xOffset, double yOffset) {
+  public void paint(Graphics2D g, double xOffset, double yOffset, int markerSize) {
 
     g.setStroke(stroke);
-    Shape circle = new Ellipse2D.Double(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE, Marker.SIZE, Marker.SIZE);
+    double halfSize = (double) markerSize / 2;
+    Shape circle = new Ellipse2D.Double(xOffset - halfSize, yOffset - halfSize, markerSize, markerSize);
     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 4a5d0abc6bca936551f2587568dbb71c873ed3d1..78f9883ec50ca6387ba63403ea194678dacaa8fe 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
@@ -24,12 +24,12 @@ import java.awt.geom.Path2D;
 public class Diamond extends Marker {
 
   @Override
-  public void paint(Graphics2D g, double xOffset, double yOffset) {
+  public void paint(Graphics2D g, double xOffset, double yOffset, int markerSize) {
 
     g.setStroke(stroke);
 
     // Make a diamond
-    double diamondHalfSize = Marker.HALF_SIZE * 1.3;
+    double diamondHalfSize = (double) markerSize / 2 * 1.3;
 
     Path2D.Double path = new Path2D.Double();
     path.moveTo(xOffset - diamondHalfSize, yOffset);
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 dd24d7f3ccdf6c4fa84b5ebf73decc17fb46b663..42ba4e3ca51cb57b29d619a716922295fc6901e3 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
@@ -25,9 +25,6 @@ public abstract class Marker {
 
   protected BasicStroke stroke = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);
 
-  public static final double SIZE = 8;
+  public abstract void paint(Graphics2D g, double xOffset, double yOffset, int markerSize);
 
-  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 2848423b170797189b6b62cf7a6cd2af617d7def..f297ebdb6dabe501f56523b8a7a6084202014db1 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
@@ -25,10 +25,11 @@ import java.awt.geom.Rectangle2D;
 public class Square extends Marker {
 
   @Override
-  public void paint(Graphics2D g, double xOffset, double yOffset) {
+  public void paint(Graphics2D g, double xOffset, double yOffset, int markerSize) {
 
     g.setStroke(stroke);
-    Shape square = new Rectangle2D.Double(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE, Marker.SIZE, Marker.SIZE);
+    double halfSize = (double) markerSize / 2;
+    Shape square = new Rectangle2D.Double(xOffset - halfSize, yOffset - halfSize, markerSize, markerSize);
     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 19dc130c8d38d4089e3a716578da4dd2a9842882..6a28809d367df7b875234caf22773d2a3f38ca1d 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
@@ -24,15 +24,16 @@ import java.awt.geom.Path2D;
 public class TriangleDown extends Marker {
 
   @Override
-  public void paint(Graphics2D g, double xOffset, double yOffset) {
+  public void paint(Graphics2D g, double xOffset, double yOffset, int markerSize) {
 
     g.setStroke(stroke);
+    double halfSize = (double) markerSize / 2;
 
     // Make a triangle
     Path2D.Double path = new Path2D.Double();
-    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.moveTo(xOffset - halfSize, 1 + yOffset - halfSize);
+    path.lineTo(xOffset, 1 + yOffset - halfSize + markerSize + 1);
+    path.lineTo(xOffset - halfSize + markerSize + 1, 1 + yOffset - halfSize);
     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 7f9bf7087e15e26319b698e0c463b7dde1363318..ebd4abe8489c331e2363c0e1b6b4f247d35191a0 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
@@ -24,15 +24,16 @@ import java.awt.geom.Path2D;
 public class TriangleUp extends Marker {
 
   @Override
-  public void paint(Graphics2D g, double xOffset, double yOffset) {
+  public void paint(Graphics2D g, double xOffset, double yOffset, int markerSize) {
 
     g.setStroke(stroke);
+    double halfSize = (double) markerSize / 2;
 
     // Make a triangle
     Path2D.Double path = new Path2D.Double();
-    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.moveTo(xOffset - halfSize, yOffset - halfSize + markerSize + 1);
+    path.lineTo(xOffset - halfSize + markerSize + 1, yOffset - halfSize + markerSize + 1);
+    path.lineTo(xOffset, yOffset - halfSize);
     path.closePath();
     g.fill(path);
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
index 1c99fe3c947592dff76fa03256eb6df37539dde2..3ccbfcbfca171db5abd305c92afb33152cfbba5f 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
@@ -288,11 +288,19 @@ public class GGPlot2Theme implements Theme {
   }
 
   @Override
-  public boolean barsOverlapped() {
+  public boolean isBarsOverlapped() {
 
     return false;
   }
 
+  // Line, Scatter, Area Charts ///////////////////////////////
+
+  @Override
+  public int getMarkerSize() {
+
+    return 8;
+  }
+
   // Error Bars ///////////////////////////////
 
   @Override
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
index 56bdc5f4d67ae4ea48c828cdbe0a9e739d01112f..d329e10e561c5f6353ff8a22017bef405adb2683 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java
@@ -289,11 +289,19 @@ public class MatlabTheme implements Theme {
   }
 
   @Override
-  public boolean barsOverlapped() {
+  public boolean isBarsOverlapped() {
 
     return false;
   }
 
+  // Line, Scatter, Area Charts ///////////////////////////////
+
+  @Override
+  public int getMarkerSize() {
+
+    return 8;
+  }
+
   // Error Bars ///////////////////////////////
 
   @Override
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
index e4e37fe3f6885ad0e51e133215a7e3d2ae801cea..d67e64250ef3859ac47707a9c189809479227cf3 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java
@@ -120,7 +120,11 @@ public interface Theme {
 
   public double getBarWidthPercentage();
 
-  public boolean barsOverlapped();
+  public boolean isBarsOverlapped();
+
+  // Line, Scatter, Area Charts ///////////////////////////////
+
+  public int getMarkerSize();
 
   // Error Bars ///////////////////////////////
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
index 1afe96c09037759ef769451113e8749a8f54c637..bd292dd16924083a235c7aaa69df0b38c8b9b1bc 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
@@ -288,11 +288,19 @@ public class XChartTheme implements Theme {
   }
 
   @Override
-  public boolean barsOverlapped() {
+  public boolean isBarsOverlapped() {
 
     return false;
   }
 
+  // Line, Scatter, Area Charts ///////////////////////////////
+
+  @Override
+  public int getMarkerSize() {
+
+    return 8;
+  }
+
   // Error Bars ///////////////////////////////
 
   @Override