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 b831f215c27ca3cfd162e64c71795862982135c2..48fe9dcacfaf91ffb573f7190a45dc8c553a1708 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
@@ -42,7 +42,7 @@ public class Example1 {
 
     BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.PNG);
     BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.JPG);
-    BitmapEncoder.saveJPGWithQuality(chart, "./Sample_Chart_With_Quality", BitmapFormat.JPG, 0.95f);
+    BitmapEncoder.saveJPGWithQuality(chart, "./Sample_Chart_With_Quality.jpg", 0.95f);
     BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.BMP);
     BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.GIF);
 
diff --git a/xchart/src/main/java/com/xeiam/xchart/BitmapEncoder.java b/xchart/src/main/java/com/xeiam/xchart/BitmapEncoder.java
index 2306fed3624b024bf553a5fd9854c953001a131e..5fb291aa1556f10dec99173755a06347a2aeae04 100644
--- a/xchart/src/main/java/com/xeiam/xchart/BitmapEncoder.java
+++ b/xchart/src/main/java/com/xeiam/xchart/BitmapEncoder.java
@@ -61,7 +61,7 @@ public final class BitmapEncoder {
    * @param bitmapFormat
    * @return filename (if extension already exists), otherwise;: filename + "." + extension
    */
-  private static String addFileExtension(String fileName, BitmapFormat bitmapFormat) {
+  public static String addFileExtension(String fileName, BitmapFormat bitmapFormat) {
 	  String fileNameWithFileExtension = fileName;
 	  final String newFileExtension = "." + bitmapFormat.toString().toLowerCase();
 	  if (fileName.length() <= newFileExtension.length() ||
@@ -172,7 +172,7 @@ public final class BitmapEncoder {
    * @throws FileNotFoundException
    * @throws IOException
    */
-  public static void saveJPGWithQuality(Chart chart, String fileName, BitmapFormat bitmapFormat, float quality) throws FileNotFoundException, IOException {
+  public static void saveJPGWithQuality(Chart chart, String fileName, float quality) throws FileNotFoundException, IOException {
 
     BufferedImage bufferedImage = getBufferedImage(chart);
 
@@ -182,7 +182,7 @@ public final class BitmapEncoder {
     ImageWriteParam iwp = writer.getDefaultWriteParam();
     iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
     iwp.setCompressionQuality(quality);
-    File file = new File(addFileExtension(fileName, bitmapFormat));
+    File file = new File(fileName);
     FileImageOutputStream output = new FileImageOutputStream(file);
     try {
       writer.setOutput(output);
diff --git a/xchart/src/main/java/com/xeiam/xchart/XChartPanel.java b/xchart/src/main/java/com/xeiam/xchart/XChartPanel.java
index b92914a123fe81b0c382a9826c0281730f7e0950..1948c7de9cc043a39dd6bc797d52e811aac1676b 100644
--- a/xchart/src/main/java/com/xeiam/xchart/XChartPanel.java
+++ b/xchart/src/main/java/com/xeiam/xchart/XChartPanel.java
@@ -130,7 +130,7 @@ public class XChartPanel extends JPanel {
           if (fileChooser.getFileFilter() == null) {
             BitmapEncoder.saveBitmap(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.PNG);
           } else if (fileChooser.getFileFilter().getDescription().equals("*.jpg,*.JPG")) {
-            BitmapEncoder.saveJPGWithQuality(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.JPG, 1.0f);
+            BitmapEncoder.saveJPGWithQuality(chart, BitmapEncoder.addFileExtension(theFileToSave.getCanonicalPath().toString(), BitmapFormat.JPG), 1.0f);
           } else if (fileChooser.getFileFilter().getDescription().equals("*.png,*.PNG")) {
             BitmapEncoder.saveBitmap(chart, theFileToSave.getCanonicalPath().toString(), BitmapFormat.PNG);
           } else if (fileChooser.getFileFilter().getDescription().equals("*.bmp,*.BMP")) {