Allow transparent circle hole color
diff --git a/MPChartLib/src/com/github/mikephil/charting/renderer/LineChartRenderer.java b/MPChartLib/src/com/github/mikephil/charting/renderer/LineChartRenderer.java
index ebc1215..64e136b 100644
--- a/MPChartLib/src/com/github/mikephil/charting/renderer/LineChartRenderer.java
+++ b/MPChartLib/src/com/github/mikephil/charting/renderer/LineChartRenderer.java
@@ -16,6 +16,7 @@
 import com.github.mikephil.charting.highlight.Highlight;
 import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider;
 import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
+import com.github.mikephil.charting.utils.ColorTemplate;
 import com.github.mikephil.charting.utils.Transformer;
 import com.github.mikephil.charting.utils.ViewPortHandler;
 
@@ -593,6 +594,8 @@
         drawCircles(c);
     }
 
+    private Path mCirclePathBuffer = new Path();
+
     protected void drawCircles(Canvas c) {
 
         mRenderPaint.setStyle(Paint.Style.FILL);
@@ -628,7 +631,11 @@
 
             float circleRadius = dataSet.getCircleRadius();
             float circleHoleRadius = dataSet.getCircleHoleRadius();
-            boolean isDrawCircleHoleEnabled = dataSet.isDrawCircleHoleEnabled();
+            boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() &&
+                    circleHoleRadius < circleRadius &&
+                    circleHoleRadius > 0.f;
+            boolean drawTransparentCircleHole = drawCircleHole &&
+                    dataSet.getCircleHoleColor() == ColorTemplate.COLOR_NONE;
 
             for (int j = minx,
                  count = (int) Math.ceil((maxx - minx) * phaseX + minx);
@@ -653,19 +660,37 @@
                         !mViewPortHandler.isInBoundsY(circlesBuffer[1]))
                     continue;
 
-                int circleColor = dataSet.getCircleColor(j);
+                mRenderPaint.setColor(dataSet.getCircleColor(j));
 
-                mRenderPaint.setColor(circleColor);
+                if (drawTransparentCircleHole) {
 
-                c.drawCircle(circlesBuffer[0], circlesBuffer[1], dataSet.getCircleRadius(),
-                        mRenderPaint);
+                    // Begin path for circle with hole
+                    mCirclePathBuffer.reset();
 
-                if (isDrawCircleHoleEnabled &&
-                        circleHoleRadius < circleRadius &&
-                        circleHoleRadius > 0.f)
-                    c.drawCircle(circlesBuffer[0], circlesBuffer[1],
+                    mCirclePathBuffer.addCircle(circlesBuffer[0], circlesBuffer[1],
+                            circleRadius,
+                            Path.Direction.CW);
+
+                    // Cut hole in path
+                    mCirclePathBuffer.addCircle(circlesBuffer[0], circlesBuffer[1],
                             circleHoleRadius,
-                            mCirclePaintInner);
+                            Path.Direction.CCW);
+
+                    // Fill in-between
+                    c.drawPath(mCirclePathBuffer, mRenderPaint);
+
+                } else {
+
+                    c.drawCircle(circlesBuffer[0], circlesBuffer[1],
+                            circleRadius,
+                            mRenderPaint);
+
+                    if (drawCircleHole) {
+                        c.drawCircle(circlesBuffer[0], circlesBuffer[1],
+                                circleHoleRadius,
+                                mCirclePaintInner);
+                    }
+                }
             }
         }
     }