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 3a14963f2741eaaccb4ba59d72b7cf7a201fc8e4..e3bcc2c22932e4274d1769cc93ba5a0832e9a730 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
@@ -144,7 +144,7 @@ public class Axis implements IChartPart {
       if (axisPair.chart.getStyleManager().isxAxisTitleVisible()) {
         TextLayout textLayout = new TextLayout(axisTitle.getText(), axisTick.axis.axisPair.chart.getStyleManager().getAxisTitleFont(), new FontRenderContext(null, true, false));
         Rectangle rectangle = textLayout.getPixelBounds(null, 0, 0);
-        titleHeight = rectangle.getHeight() + AxisTitle.AXIS_TITLE_PADDING;
+        titleHeight = rectangle.getHeight() + axisTick.axis.axisPair.chart.getStyleManager().getAxisTitlePadding();
       }
 
       // Axis tick labels
@@ -152,7 +152,8 @@ public class Axis implements IChartPart {
       if (axisPair.chart.getStyleManager().isxAxisTicksVisible()) {
         TextLayout textLayout = new TextLayout("0", axisTick.axis.axisPair.chart.getStyleManager().getAxisTicksFont(), new FontRenderContext(null, true, false));
         Rectangle rectangle = textLayout.getPixelBounds(null, 0, 0);
-        axisTickLabelsHeight = rectangle.getHeight() + AxisTick.AXIS_TICK_PADDING + AxisTickMarks.TICK_LENGTH + Plot.PLOT_PADDING;
+        axisTickLabelsHeight = rectangle.getHeight() + axisPair.chart.getStyleManager().getAxisTickPadding() + axisPair.chart.getStyleManager().getAxisTickMarkLength()
+            + axisPair.chart.getStyleManager().getPlotPadding();
       }
       return (int) (titleHeight + axisTickLabelsHeight);
     } else { // Y-Axis
@@ -202,8 +203,8 @@ public class Axis implements IChartPart {
       // calculate paint zone
       // |____________________|
 
-      int xOffset = (int) (axisPair.yAxis.getBounds().getWidth() + (axisPair.chart.getStyleManager().isyAxisTicksVisible() ? Plot.PLOT_PADDING : 0) + axisPair.chart.getStyleManager()
-          .getChartPadding());
+      int xOffset = (int) (axisPair.yAxis.getBounds().getWidth() + (axisPair.chart.getStyleManager().isyAxisTicksVisible() ? axisPair.chart.getStyleManager().getPlotPadding() : 0) + axisPair.chart
+          .getStyleManager().getChartPadding());
       int yOffset = (int) (axisPair.yAxis.getBounds().getY() + axisPair.yAxis.getBounds().getHeight());
       int width = (int) (axisPair.chart.width - axisPair.yAxis.getBounds().getWidth() - axisPair.getChartLegendBounds().getWidth() - (axisPair.chart.getStyleManager().isLegendVisible() ? 3 : 2)
           * axisPair.chart.getStyleManager().getChartPadding());
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
index 2d35abb7395fabee6007c3aa5040374d6283df74..030fe3320e086c64eba11717a7f5a8aa1b356c72 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
@@ -30,7 +30,7 @@ import com.xeiam.xchart.internal.interfaces.IHideable;
 import com.xeiam.xchart.internal.misc.AxisValueFormatterUtil;
 
 /**
- * An axis tick.
+ * An axis tick
  */
 public class AxisTick implements IChartPart, IHideable {
 
@@ -40,9 +40,6 @@ public class AxisTick implements IChartPart, IHideable {
   /** the default tick mark step hint for y axis */
   private static final int DEFAULT_TICK_MARK_STEP_HINT_Y = 44;
 
-  /** the padding between the tick labels and the tick marks */
-  protected final static int AXIS_TICK_PADDING = 4;
-
   /** parent */
   protected Axis axis;
 
@@ -123,14 +120,14 @@ public class AxisTick implements IChartPart, IHideable {
       axisTickMarks.paint(g);
 
       if (axis.direction == Axis.Direction.Y) {
-        bounds = new Rectangle((int) axisTickLabels.getBounds().getX(), (int) (axisTickLabels.getBounds().getY()), (int) (axisTickLabels.getBounds().getWidth() + AXIS_TICK_PADDING + axisTickMarks
-            .getBounds().getWidth()), (int) (axisTickMarks.getBounds().getHeight()));
+        bounds = new Rectangle((int) axisTickLabels.getBounds().getX(), (int) (axisTickLabels.getBounds().getY()), (int) (axisTickLabels.getBounds().getWidth()
+            + axis.axisPair.chart.getStyleManager().getAxisTickPadding() + axisTickMarks.getBounds().getWidth()), (int) (axisTickMarks.getBounds().getHeight()));
         // g.setColor(Color.red);
         // g.draw(bounds);
       } else {
         bounds = new Rectangle((int) axisTickMarks.getBounds().getX(), (int) (axisTickMarks.getBounds().getY()), (int) axisTickLabels.getBounds().getWidth(), (int) (axisTickMarks.getBounds()
             .getHeight()
-            + AXIS_TICK_PADDING + axisTickLabels.getBounds().getHeight()));
+            + axis.axisPair.chart.getStyleManager().getAxisTickPadding() + axisTickLabels.getBounds().getHeight()));
         // g.setColor(Color.red);
         // g.draw(bounds);
       }
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 db9eebd97204679450308b3ad010950b745fd9c3..1acf0741e4d737b0e08b0fdb4d7fed6043ba64a6 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
@@ -27,9 +27,6 @@ import com.xeiam.xchart.internal.interfaces.IChartPart;
  */
 public class AxisTickMarks implements IChartPart {
 
-  /** the tick length */
-  public static final int TICK_LENGTH = 3;
-
   /** parent */
   private AxisTick axisTick;
 
@@ -64,7 +61,7 @@ public class AxisTickMarks implements IChartPart {
 
     if (axisTick.axis.direction == Axis.Direction.Y) { // Y-Axis
 
-      int xOffset = (int) (axisTick.axisTickLabels.getBounds().getX() + axisTick.axisTickLabels.getBounds().getWidth() + AxisTick.AXIS_TICK_PADDING);
+      int xOffset = (int) (axisTick.axisTickLabels.getBounds().getX() + axisTick.axisTickLabels.getBounds().getWidth() + axisTick.axis.axisPair.chart.getStyleManager().getAxisTickPadding());
       int yOffset = (int) (axisTick.axis.getPaintZone().getY());
 
       // tick marks
@@ -75,21 +72,24 @@ public class AxisTickMarks implements IChartPart {
         g.setColor(axisTick.axis.axisPair.chart.getStyleManager().getChartBordersColor());
         g.setStroke(stroke);
 
-        g.drawLine(xOffset, yOffset + (int) (axisTick.axis.getPaintZone().getHeight() - tickLocation), xOffset + TICK_LENGTH, yOffset + (int) (axisTick.axis.getPaintZone().getHeight() - tickLocation));
+        g.drawLine(xOffset, yOffset + (int) (axisTick.axis.getPaintZone().getHeight() - tickLocation), xOffset + axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength(), yOffset
+            + (int) (axisTick.axis.getPaintZone().getHeight() - tickLocation));
 
       }
       // Line
-      g.drawLine(xOffset + TICK_LENGTH, yOffset, xOffset + TICK_LENGTH, yOffset + (int) axisTick.axis.getPaintZone().getHeight());
-
+      if (axisTick.axis.axisPair.chart.getStyleManager().isAxisTicksLineVisible()) {
+        g.drawLine(xOffset + axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength(), yOffset, xOffset + axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength(), yOffset
+            + (int) axisTick.axis.getPaintZone().getHeight());
+      }
       // bounds
-      bounds = new Rectangle(xOffset, yOffset, TICK_LENGTH, (int) axisTick.axis.getPaintZone().getHeight());
+      bounds = new Rectangle(xOffset, yOffset, axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength(), (int) axisTick.axis.getPaintZone().getHeight());
       // g.setColor(Color.yellow);
       // g.draw(bounds);
 
     } else { // X-Axis
 
       int xOffset = (int) (axisTick.axis.getPaintZone().getX());
-      int yOffset = (int) (axisTick.axisTickLabels.getBounds().getY() - AxisTick.AXIS_TICK_PADDING);
+      int yOffset = (int) (axisTick.axisTickLabels.getBounds().getY() - axisTick.axis.axisPair.chart.getStyleManager().getAxisTickPadding());
 
       // tick marks
       for (int i = 0; i < axisTick.tickLabels.size(); i++) {
@@ -99,13 +99,19 @@ public class AxisTickMarks implements IChartPart {
         g.setColor(axisTick.axis.axisPair.chart.getStyleManager().getChartBordersColor());
         g.setStroke(stroke);
 
-        g.drawLine(xOffset + tickLocation, yOffset, xOffset + tickLocation, yOffset - TICK_LENGTH);
+        g.drawLine(xOffset + tickLocation, yOffset, xOffset + tickLocation, yOffset - axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength());
       }
+
       // Line
-      g.drawLine(xOffset, yOffset - TICK_LENGTH, xOffset + (int) axisTick.axis.getPaintZone().getWidth(), yOffset - TICK_LENGTH);
+      if (axisTick.axis.axisPair.chart.getStyleManager().isAxisTicksLineVisible()) {
+
+        g.drawLine(xOffset, yOffset - axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength(), xOffset + (int) axisTick.axis.getPaintZone().getWidth(), yOffset
+            - axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength());
+      }
 
       // bounds
-      bounds = new Rectangle(xOffset, yOffset - TICK_LENGTH, (int) axisTick.axis.getPaintZone().getWidth(), TICK_LENGTH);
+      bounds = new Rectangle(xOffset, yOffset - axisTick.axis.axisPair.chart.getStyleManager().getAxisTickMarkLength(), (int) axisTick.axis.getPaintZone().getWidth(), axisTick.axis.axisPair.chart
+          .getStyleManager().getAxisTickMarkLength());
       // g.setColor(Color.yellow);
       // g.draw(bounds);
     }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
index 256fb64d2c8869b5a910fbffc358d52a0eb51413..2317d430e7f1bf0ac089448c2a678565a00d256f 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
@@ -29,8 +29,6 @@ import com.xeiam.xchart.internal.interfaces.IHideable;
  */
 public class AxisTitle implements IChartPart, IHideable {
 
-  protected final static int AXIS_TITLE_PADDING = 10;
-
   /** parent */
   private final Axis axis;
 
@@ -111,8 +109,8 @@ public class AxisTitle implements IChartPart, IHideable {
         g.setTransform(orig);
 
         // bounds
-        bounds = new Rectangle((int) (xOffset - nonRotatedRectangle.getHeight()), (int) (yOffset - nonRotatedRectangle.getWidth()), (int) nonRotatedRectangle.getHeight() + AXIS_TITLE_PADDING,
-            (int) nonRotatedRectangle.getWidth());
+        bounds = new Rectangle((int) (xOffset - nonRotatedRectangle.getHeight()), (int) (yOffset - nonRotatedRectangle.getWidth()), (int) nonRotatedRectangle.getHeight()
+            + axis.axisPair.chart.getStyleManager().getAxisTitlePadding(), (int) nonRotatedRectangle.getWidth());
         // g.setColor(Color.blue);
         // g.draw(bounds);
       } else {
@@ -133,7 +131,8 @@ public class AxisTitle implements IChartPart, IHideable {
 
         textLayout.draw(g, xOffset, (float) (yOffset - rectangle.getY()));
 
-        bounds = new Rectangle(xOffset, yOffset - AXIS_TITLE_PADDING, (int) rectangle.getWidth(), (int) rectangle.getHeight() + AXIS_TITLE_PADDING);
+        bounds = new Rectangle(xOffset, yOffset - axis.axisPair.chart.getStyleManager().getAxisTitlePadding(), (int) rectangle.getWidth(), (int) rectangle.getHeight()
+            + axis.axisPair.chart.getStyleManager().getAxisTitlePadding());
         // g.setColor(Color.blue);
         // g.draw(bounds);
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java
index 879adc3166b7beb3296ac92a1469c18268eb519a..e9f4260448de7d15248a9267934c3c4dd014b4d6 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java
@@ -33,8 +33,6 @@ public class Plot implements IChartPart {
 
   protected PlotContent plotContent;
 
-  public static final int PLOT_PADDING = 3;
-
   /** the bounds */
   private Rectangle bounds;
 
@@ -57,7 +55,8 @@ public class Plot implements IChartPart {
     bounds = new Rectangle();
 
     // calculate bounds
-    int xOffset = (int) (chart.axisPair.yAxis.getBounds().getX() + chart.axisPair.yAxis.getBounds().getWidth() + (chart.getStyleManager().isyAxisTicksVisible() ? (Plot.PLOT_PADDING + 1) : 0));
+    int xOffset = (int) (chart.axisPair.yAxis.getBounds().getX() + chart.axisPair.yAxis.getBounds().getWidth() + (chart.getStyleManager().isyAxisTicksVisible() ? (chart.getStyleManager()
+        .getPlotPadding() + 1) : 0));
     int yOffset = (int) (chart.axisPair.yAxis.getBounds().getY());
     int width = (int) chart.axisPair.xAxis.getBounds().getWidth();
     int height = (int) chart.axisPair.yAxis.getBounds().getHeight();
diff --git a/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
index be84e6389b227470066a93c62895095c4f4a8810..2fea5b2e3c68effccb085316840fa6e0359a648f 100644
--- a/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/style/StyleManager.java
@@ -54,6 +54,11 @@ public class StyleManager {
   private boolean xAxisTicksVisible;
   private boolean yAxisTicksVisible;
   private Font axisTicksFont;
+  private int axisTickMarkLength;
+  private int axisTickPadding;
+  private boolean isAxisTicksLineVisible;
+  private int plotPadding;
+  private int axisTitlePadding;
 
   /**
    * Constructor
@@ -85,6 +90,11 @@ public class StyleManager {
     xAxisTicksVisible = theme.isXAxisTicksVisible();
     yAxisTicksVisible = theme.isYAxisTicksVisible();
     axisTicksFont = theme.getAxisTicksFont();
+    axisTickMarkLength = theme.getAxisTickMarkLength();
+    axisTickPadding = theme.getAxisTickPadding();
+    isAxisTicksLineVisible = theme.isAxisTicksLineVisible();
+    plotPadding = theme.getPlotPadding();
+    axisTitlePadding = theme.getAxisTitlePadding();
   }
 
   /**
@@ -372,4 +382,78 @@ public class StyleManager {
     return axisTicksFont;
   }
 
+  /**
+   * set the axis tick mark length
+   * 
+   * @param axisTickMarkLength
+   */
+  public void setAxisTickMarkLength(int axisTickMarkLength) {
+
+    this.axisTickMarkLength = axisTickMarkLength;
+  }
+
+  public int getAxisTickMarkLength() {
+
+    return axisTickMarkLength;
+  }
+
+  /**
+   * the padding between the tick labels and the tick marks
+   * 
+   * @param axisTickPadding
+   */
+  public void setAxisTickPadding(int axisTickPadding) {
+
+    this.axisTickPadding = axisTickPadding;
+  }
+
+  public int getAxisTickPadding() {
+
+    return axisTickPadding;
+  }
+
+  /**
+   * sets the visibility of the line parallel to the plot edges that go along with the tick marks
+   * 
+   * @param isAxisTicksLineVisible
+   */
+  public void setAxisTicksLineVisible(boolean isAxisTicksLineVisible) {
+
+    this.isAxisTicksLineVisible = isAxisTicksLineVisible;
+  }
+
+  public boolean isAxisTicksLineVisible() {
+
+    return isAxisTicksLineVisible;
+  }
+
+  /**
+   * sets the pading between the tick marks and the plot area
+   * 
+   * @param plotPadding
+   */
+  public void setPlotPadding(int plotPadding) {
+
+    this.plotPadding = plotPadding;
+  }
+
+  public int getPlotPadding() {
+
+    return plotPadding;
+  }
+
+  /**
+   * sets the padding between the axis title and the tick labels
+   * 
+   * @param axisTitlePadding
+   */
+  public void setAxisTitlePadding(int axisTitlePadding) {
+
+    this.axisTitlePadding = axisTitlePadding;
+  }
+
+  public int getAxisTitlePadding() {
+
+    return axisTitlePadding;
+  }
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java b/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java
index 4066f2d13a775e4f357127267e39b8c46c0abd5b..87abdcec54d28c75483bd21f3c9603b86ef5c767 100644
--- a/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/style/theme/Theme.java
@@ -69,4 +69,14 @@ public interface Theme {
 
   public Font getAxisTicksFont();
 
+  public int getAxisTickMarkLength();
+
+  public int getAxisTickPadding();
+
+  public boolean isAxisTicksLineVisible();
+
+  public int getAxisTitlePadding();
+
+  public int getPlotPadding();
+
 }
diff --git a/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java
index 6762429075de34951c43b0ae2c3708fecff3ea0d..93ed3b98c22a98b18208e0f9cbd4e7a876a0a9a6 100644
--- a/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/style/theme/XChartTheme.java
@@ -133,4 +133,33 @@ public class XChartTheme implements Theme {
     return new Font(Font.SANS_SERIF, Font.BOLD, 12);
   }
 
+  @Override
+  public int getAxisTickMarkLength() {
+
+    return 3;
+  }
+
+  @Override
+  public int getAxisTickPadding() {
+
+    return 4;
+  }
+
+  @Override
+  public boolean isAxisTicksLineVisible() {
+
+    return true;
+  }
+
+  @Override
+  public int getPlotPadding() {
+
+    return 3;
+  }
+
+  @Override
+  public int getAxisTitlePadding() {
+
+    return 10;
+  }
 }