diff --git a/android/src/main/java/com/horcrux/svg/GroupView.java b/android/src/main/java/com/horcrux/svg/GroupView.java index c56068b62..f1a44a0a5 100644 --- a/android/src/main/java/com/horcrux/svg/GroupView.java +++ b/android/src/main/java/com/horcrux/svg/GroupView.java @@ -95,6 +95,7 @@ void drawGroup(final Canvas canvas, final Paint paint, final float opacity) { final GroupView self = this; final RectF groupRect = new RectF(); + int layerCount = -1; if (mOpacity != 1) { if (mLayerBitmap == null) { mLayerBitmap = @@ -107,7 +108,7 @@ void drawGroup(final Canvas canvas, final Paint paint, final float opacity) { mLayerCanvas.setBitmap(mLayerBitmap); } // Copy current matrix from original canvas - mLayerCanvas.save(); + layerCount = mLayerCanvas.save(); mLayerCanvas.setMatrix(canvas.getMatrix()); } else { mLayerCanvas = canvas; @@ -161,7 +162,7 @@ void drawGroup(final Canvas canvas, final Paint paint, final float opacity) { if (mOpacity != 1) { // Restore copied canvas and temporary reset original canvas matrix to draw bitmap 1:1 - mLayerCanvas.restore(); + if (layerCount > 0) mLayerCanvas.restoreToCount(layerCount); int saveCount = canvas.save(); canvas.setMatrix(null); mLayerPaint.setAlpha((int) (mOpacity * 255));