diff --git a/pom.xml b/pom.xml
index 38e4cc1467c04e0dfb5528389941d32042710903..86a0356a8be60b04f5ddc90b3f56f8fc4ad2a0a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
 	<modelVersion>4.0.0</modelVersion>
 
@@ -114,6 +115,33 @@
 					<autoversionsubmodules>true</autoversionsubmodules>
 				</configuration>
 			</plugin>
+			<!-- <plugin> -->
+			<!-- <artifactId>maven-enforcer-plugin</artifactId> -->
+			<!-- <version>1.2</version> -->
+			<!-- <dependencies> -->
+			<!-- <dependency> -->
+			<!-- <groupId>de.andrena.tools.nopackagecycles</groupId> -->
+			<!-- <artifactId>no-package-cycles-enforcer-rule</artifactId> -->
+			<!-- <version>1.0.0</version> -->
+			<!-- </dependency> -->
+			<!-- </dependencies> -->
+			<!-- <executions> -->
+			<!-- <execution> -->
+			<!-- <id>enforce-no-package-cycles</id> -->
+			<!-- <goals> -->
+			<!-- <goal>enforce</goal> -->
+			<!-- </goals> -->
+			<!-- <phase>compile</phase> -->
+			<!-- <configuration> -->
+			<!-- <rules> -->
+			<!-- <NoPackageCyclesRule -->
+			<!-- implementation="de.andrena.tools.nopackagecycles.NoPackageCyclesRule" 
+				/> -->
+			<!-- </rules> -->
+			<!-- </configuration> -->
+			<!-- </execution> -->
+			<!-- </executions> -->
+			<!-- </plugin> -->
 		</plugins>
 	</build>
 
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java
index 6f2505cc61518b75d25cf4fb8c1faaa9cd1b7925..5a2770af7aca374f4d07e27f7d1f650718c23a72 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java
@@ -93,6 +93,7 @@ public class LineChart03 implements ExampleChart {
     chart.getStyleManager().setChartTitleFont(new Font(Font.MONOSPACED, Font.BOLD, 24));
     chart.getStyleManager().setLegendFont(new Font(Font.SERIF, Font.PLAIN, 18));
     chart.getStyleManager().setLegendPosition(LegendPosition.InsideSE);
+    chart.getStyleManager().setLegendSeriesLineLength(12);
     chart.getStyleManager().setAxisTitleFont(new Font(Font.SANS_SERIF, Font.ITALIC, 18));
     chart.getStyleManager().setAxisTickLabelsFont(new Font(Font.SERIF, Font.PLAIN, 11));
     chart.getStyleManager().setDatePattern("dd-MMM");
diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
index 249e7b57e5c6c8efca6bb33c4cb7fad4a18bc2df..321e4ceebcde34551e0131c76ac96a2265b5a996 100644
--- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
@@ -72,6 +72,7 @@ public class StyleManager {
   private Color legendBorderColor;
   private Font legendFont;
   private int legendPadding;
+  private int legendSeriesLineLength;
   private LegendPosition legendPosition;
 
   // Chart Axes ///////////////////////////////
@@ -146,6 +147,7 @@ public class StyleManager {
     legendBorderColor = theme.getLegendBorderColor();
     legendFont = theme.getLegendFont();
     legendPadding = theme.getLegendPadding();
+    legendSeriesLineLength = theme.getLegendSeriesLineLength();
     legendPosition = theme.getLegendPosition();
 
     // axes
@@ -438,6 +440,26 @@ public class StyleManager {
     return legendPadding;
   }
 
+  /**
+   * Set the chart legend series line length
+   * 
+   * @param legendPadding
+   */
+  public void setLegendSeriesLineLength(int legendSeriesLineLength) {
+
+    if (legendSeriesLineLength < 0) {
+      this.legendSeriesLineLength = 0;
+    }
+    else {
+      this.legendSeriesLineLength = legendSeriesLineLength;
+    }
+  }
+
+  public int getLegendSeriesLineLength() {
+
+    return legendSeriesLineLength;
+  }
+
   /**
    * sets the legend position
    * 
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 02cab6faa4e5b96c24e8b7c79bdf1386a9ce1355..ee1c6a5069f710f2fb1104a457c93d7b334c8c88 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
@@ -93,7 +93,7 @@ public class Legend implements ChartPart {
       // determine legend content width
       double legendContentWidth = 0;
       if (getChartPainter().getStyleManager().getChartType() != ChartType.Bar) {
-        legendContentWidth = 3.0 * Marker.SIZE + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth;
+        legendContentWidth = getChartPainter().getStyleManager().getLegendSeriesLineLength() + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth;
       }
       else {
         legendContentWidth = BOX_SIZE + chartPainter.getStyleManager().getLegendPadding() + legendTextContentMaxWidth;
@@ -169,14 +169,14 @@ public class Legend implements ChartPart {
           if (getChartPainter().getStyleManager().getChartType() != ChartType.Scatter && series.getStroke() != null) {
             g.setColor(series.getStrokeColor());
             g.setStroke(series.getStroke());
-            Shape line = new Line2D.Double(startx, starty + maxContentHeight / 2.0, startx + Marker.SIZE * 3.0, starty + maxContentHeight / 2.0);
+            Shape line = new Line2D.Double(startx, starty + maxContentHeight / 2.0, startx + getChartPainter().getStyleManager().getLegendSeriesLineLength(), starty + maxContentHeight / 2.0);
             g.draw(line);
           }
 
           // paint marker
           if (series.getMarker() != null) {
             g.setColor(series.getMarkerColor());
-            series.getMarker().paint(g, startx + (Marker.SIZE * 1.5), starty + maxContentHeight / 2.0);
+            series.getMarker().paint(g, startx + getChartPainter().getStyleManager().getLegendSeriesLineLength() / 2.0, starty + maxContentHeight / 2.0);
           }
         }
         else {
@@ -193,8 +193,8 @@ public class Legend implements ChartPart {
         g.setColor(chartPainter.getStyleManager().getChartFontColor());
         TextLayout layout = new TextLayout(series.getName(), chartPainter.getStyleManager().getLegendFont(), new FontRenderContext(null, true, false));
         if (getChartPainter().getStyleManager().getChartType() != ChartType.Bar) {
-          layout.draw(g, (float) (startx + Marker.SIZE + (Marker.SIZE * 1.5) + chartPainter.getStyleManager().getLegendPadding()), (float) (starty + (maxContentHeight - 1 + layout.getBounds()
-              .getHeight()) / 2.0));
+          layout.draw(g, (float) (startx + getChartPainter().getStyleManager().getLegendSeriesLineLength() + chartPainter.getStyleManager().getLegendPadding()),
+              (float) (starty + (maxContentHeight - 1 + layout.getBounds().getHeight()) / 2.0));
         }
         else {
           layout.draw(g, (float) (startx + BOX_SIZE + chartPainter.getStyleManager().getLegendPadding()), (float) (starty + (maxContentHeight + layout.getBounds().getHeight()) / 2.0));
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 4ff6ca9e1fa983daf29f6147d6e605f31da575a3..ad8f3b057c14b88ffaf77e083f72e5bf77511166 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
@@ -118,6 +118,12 @@ public class GGPlot2Theme implements Theme {
     return 10;
   }
 
+  @Override
+  public int getLegendSeriesLineLength() {
+
+    return 24;
+  }
+
   @Override
   public LegendPosition getLegendPosition() {
 
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 01864a333653f10f135b51865ec1250388c7bca8..b4791525bac7be79f9fdca92e65ba94d79fb39dd 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
@@ -119,6 +119,12 @@ public class MatlabTheme implements Theme {
     return 10;
   }
 
+  @Override
+  public int getLegendSeriesLineLength() {
+
+    return 24;
+  }
+
   @Override
   public LegendPosition getLegendPosition() {
 
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 3e794b4df706a44f7f3793277ff64609ab382627..78660fa48753557ac979cb166223d8d1310280e5 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
@@ -60,6 +60,8 @@ public interface Theme {
 
   public int getLegendPadding();
 
+  public int getLegendSeriesLineLength();
+
   public LegendPosition getLegendPosition();
 
   // Chart Axes ///////////////////////////////
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 255fcb39af1ea4eea1392017cd64c07d0c6190e6..70116fe15dc68d9fc5eb02e9311387d7a363d1a1 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
@@ -119,6 +119,12 @@ public class XChartTheme implements Theme {
     return 10;
   }
 
+  @Override
+  public int getLegendSeriesLineLength() {
+
+    return 24;
+  }
+
   @Override
   public LegendPosition getLegendPosition() {