diff --git a/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java b/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
index ef66f9915ab60c9e82ed68c3da3281e4bc461fcf..87d1eb88536fe0c3fd234349b393c46ea4436138 100644
--- a/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
+++ b/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
@@ -29,7 +29,7 @@ import com.xeiam.xchart.internal.interfaces.IChartPart;
 public class AxisTickLabels implements IChartPart {
 
   /** parent */
-  private AxisTick axisTick;
+  private final AxisTick axisTick;
 
   /** the font */
   public Font font;
@@ -58,6 +58,7 @@ public class AxisTickLabels implements IChartPart {
   public void paint(Graphics2D g) {
 
     bounds = new Rectangle();
+    g.setFont(font);
 
     g.setColor(axisTick.axis.axisPair.chart.fontColor);
 
diff --git a/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java b/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
index 498972d9358025f60758ddf5323df6f3d6b22462..b65ec9f976879b44090daafdac71516fa249f72d 100644
--- a/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
+++ b/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
@@ -96,6 +96,7 @@ public class AxisTitle implements IChartPart, IHideable {
     bounds = new Rectangle();
 
     g.setColor(axis.axisPair.chart.fontColor);
+    g.setFont(font);
 
     if (axis.direction == Axis.Direction.Y) {
       if (isVisible) {
@@ -105,20 +106,28 @@ public class AxisTitle implements IChartPart, IHideable {
         Rectangle nonRotatedRectangle = nonRotatedTextLayout.getPixelBounds(null, 0, 0);
         // System.out.println(nonRotatedRectangle);
 
-        AffineTransform at = new AffineTransform();
-        // Tx.translate(anchorx, anchory); // S3: final translation
-        double theta = Math.PI / -2.0;
-        at.rotate(theta); // S2: rotate around anchor
-        // Tx.translate(-anchorx, -anchory); // S1: translate anchor to origin
-        Font derivedFont = font.deriveFont(at);
-        TextLayout rotatedTextLayout = new TextLayout(text, derivedFont, frc);
-        // TextLayout rotatedTextLayout = new TextLayout(text, font.deriveFont(AffineTransform.getRotateInstance(Math.PI / -2.0, 0, 0)), frc);
-        // Rectangle rotatedRectangle = rotatedTextLayout.getPixelBounds(null, 0, 0);
-        // System.out.println(rotatedRectangle);
-
+        // ///////////////////////////////////////////////
+
+        // AffineTransform at = new AffineTransform();
+        // // Tx.translate(anchorx, anchory); // S3: final translation
+        // double theta = Math.PI / -2.0;
+        // at.rotate(theta); // S2: rotate around anchor
+        // // Tx.translate(-anchorx, -anchory); // S1: translate anchor to origin
+        // Font derivedFont = font.deriveFont(at);
+        // TextLayout rotatedTextLayout = new TextLayout(text, derivedFont, frc);
+        // // TextLayout rotatedTextLayout = new TextLayout(text, font.deriveFont(AffineTransform.getRotateInstance(Math.PI / -2.0, 0, 0)), frc);
+        // // Rectangle rotatedRectangle = rotatedTextLayout.getPixelBounds(null, 0, 0);
+        // // System.out.println(rotatedRectangle);
+        //
         int xOffset = (int) (axis.getPaintZone().getX() + nonRotatedRectangle.getHeight());
         int yOffset = (int) ((axis.getPaintZone().getHeight() + nonRotatedRectangle.getWidth()) / 2.0 + axis.getPaintZone().getY());
-        rotatedTextLayout.draw(g, xOffset, yOffset);
+        AffineTransform orig = g.getTransform();
+        g.transform(AffineTransform.getRotateInstance(Math.PI / -2.0, xOffset, yOffset));
+        g.drawString(text, xOffset, yOffset);
+        // rotatedTextLayout.draw(g, xOffset, yOffset);
+
+        // ///////////////////////////////////////////////
+        g.setTransform(orig);
 
         // bounds
         bounds = new Rectangle((int) (xOffset - nonRotatedRectangle.getHeight()), (int) (yOffset - nonRotatedRectangle.getWidth()), (int) nonRotatedRectangle.getHeight() + AXIS_TITLE_PADDING,
diff --git a/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java b/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
index 3b38c746279436a974f625a118aabe5d87c0039f..5593723fb40b6b78121dc0cb6826b7f9658adae7 100644
--- a/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
+++ b/src/main/java/com/xeiam/xchart/internal/chartpart/ChartTitle.java
@@ -31,7 +31,7 @@ import com.xeiam.xchart.internal.interfaces.IHideable;
 public class ChartTitle implements IChartPart, IHideable {
 
   /** parent */
-  private Chart chart;
+  private final Chart chart;
 
   /** the title text */
   protected String text = ""; // default to ""
@@ -76,6 +76,7 @@ public class ChartTitle implements IChartPart, IHideable {
   public void paint(Graphics2D g) {
 
     bounds = new Rectangle();
+    g.setFont(font);
 
     if (isVisible) {
 
diff --git a/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java b/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
index 984b8d41d88d389504c3a7783914d9293e911824..af53c8e4439e7c03cbd3eb724ef34d3c3f6f0cfc 100644
--- a/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
+++ b/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
@@ -38,7 +38,7 @@ public class Legend implements IChartPart, IHideable {
   private static final int LEGEND_PADDING = 10;
 
   /** parent */
-  private Chart chart;
+  private final Chart chart;
 
   /** the visibility state of legend */
   protected boolean isVisible = true; // default to true
@@ -74,6 +74,7 @@ public class Legend implements IChartPart, IHideable {
   public void paint(Graphics2D g) {
 
     bounds = new Rectangle();
+    g.setFont(font);
 
     if (isVisible) {