diff --git a/AndroidPlot-Core/src/main/java/com/androidplot/ui/LayoutManager.java b/AndroidPlot-Core/src/main/java/com/androidplot/ui/LayoutManager.java
index 1983ca7..dde214a 100644
--- a/AndroidPlot-Core/src/main/java/com/androidplot/ui/LayoutManager.java
+++ b/AndroidPlot-Core/src/main/java/com/androidplot/ui/LayoutManager.java
@@ -89,7 +89,7 @@
         for (Widget widget : elements()) {
             //int canvasState = canvas.save(Canvas.ALL_SAVE_FLAG); // preserve clipping etc
             try {
-                canvas.save(Canvas.ALL_SAVE_FLAG);
+                canvas.save();
                 PositionMetrics metrics = widget.getPositionMetrics();
                 float elementWidth = widget.getWidthPix(displayDims.paddedRect.width());
                 float elementHeight = widget.getHeightPix(displayDims.paddedRect.height());
@@ -148,8 +148,8 @@
     private void drawSpacing(Canvas canvas, RectF outer, RectF inner, Paint paint) {
         //int saved = canvas.save(Canvas.ALL_SAVE_FLAG);
         try {
-            canvas.save(Canvas.ALL_SAVE_FLAG);
-            canvas.clipRect(inner, Region.Op.DIFFERENCE);
+            canvas.save();
+            canvas.clipOutRect(inner);
             canvas.drawRect(outer, paint);
             //canvas.restoreToCount(saved);
         } finally {
diff --git a/AndroidPlot-Core/src/main/java/com/androidplot/ui/SeriesRenderer.java b/AndroidPlot-Core/src/main/java/com/androidplot/ui/SeriesRenderer.java
index b32f12d..fb864c7 100644
--- a/AndroidPlot-Core/src/main/java/com/androidplot/ui/SeriesRenderer.java
+++ b/AndroidPlot-Core/src/main/java/com/androidplot/ui/SeriesRenderer.java
@@ -62,8 +62,8 @@
     public void drawSeriesLegendIcon(Canvas canvas, RectF rect, SeriesFormatterType formatter) {
         //int state = canvas.save(Canvas.CLIP_SAVE_FLAG);
         try {
-            canvas.save(Canvas.ALL_SAVE_FLAG);
-            canvas.clipRect(rect, Region.Op.INTERSECT);
+            canvas.save();
+            canvas.clipRect(rect);
             doDrawLegendIcon(canvas, rect, formatter);
             //canvas.restoreToCount(state);
         } finally {
diff --git a/AndroidPlot-Core/src/main/java/com/androidplot/ui/widget/TextLabelWidget.java b/AndroidPlot-Core/src/main/java/com/androidplot/ui/widget/TextLabelWidget.java
index 96615b8..93004d1 100644
--- a/AndroidPlot-Core/src/main/java/com/androidplot/ui/widget/TextLabelWidget.java
+++ b/AndroidPlot-Core/src/main/java/com/androidplot/ui/widget/TextLabelWidget.java
@@ -115,7 +115,7 @@
         //int canvasState = canvas.save(Canvas.ALL_SAVE_FLAG);
 
         try {
-            canvas.save(Canvas.ALL_SAVE_FLAG);
+            canvas.save();
             canvas.translate(start.x, start.y);
             switch (orientation) {
                 case HORIZONTAL:
diff --git a/AndroidPlot-Core/src/main/java/com/androidplot/xy/LineAndPointRenderer.java b/AndroidPlot-Core/src/main/java/com/androidplot/xy/LineAndPointRenderer.java
index 14595c4..12f96f0 100644
--- a/AndroidPlot-Core/src/main/java/com/androidplot/xy/LineAndPointRenderer.java
+++ b/AndroidPlot-Core/src/main/java/com/androidplot/xy/LineAndPointRenderer.java
@@ -205,7 +205,7 @@
             RectF regionRect = r.getRectF(plotArea, minX, maxX, minY, maxY);
             if (regionRect != null) {
                 try {
-                canvas.save(Canvas.ALL_SAVE_FLAG);
+                canvas.save();
                 canvas.clipPath(path);
                 canvas.drawRect(regionRect, f.getPaint());
                 } finally {
diff --git a/AndroidPlot-Core/src/main/java/com/androidplot/xy/XYGraphWidget.java b/AndroidPlot-Core/src/main/java/com/androidplot/xy/XYGraphWidget.java
index c6ce620..e46a676 100644
--- a/AndroidPlot-Core/src/main/java/com/androidplot/xy/XYGraphWidget.java
+++ b/AndroidPlot-Core/src/main/java/com/androidplot/xy/XYGraphWidget.java
@@ -824,8 +824,8 @@
 
         // int canvasState = canvas.save();
         try {
-            canvas.save(Canvas.ALL_SAVE_FLAG);
-            canvas.clipRect(gridRect, android.graphics.Region.Op.INTERSECT);
+            canvas.save();
+            canvas.clipRect(gridRect);
             for (XYSeriesRenderer renderer : plot.getRendererList()) {
                 renderer.render(canvas, paddedGridRect);
             }
