diff --git a/Cairo/Perspex.Cairo/Media/DrawingContext.cs b/Cairo/Perspex.Cairo/Media/DrawingContext.cs
index 1d6d2a146a..505b780a83 100644
--- a/Cairo/Perspex.Cairo/Media/DrawingContext.cs
+++ b/Cairo/Perspex.Cairo/Media/DrawingContext.cs
@@ -162,11 +162,10 @@ namespace Perspex.Cairo.Media
/// A disposable used to undo the clip rectangle.
public IDisposable PushClip(Rect clip)
{
- this.context.Save();
this.context.Rectangle(clip.ToCairo());
this.context.Clip();
- return Disposable.Create(() => this.context.Restore());
+ return Disposable.Create(() => this.context.ResetClip());
}
///
@@ -176,14 +175,11 @@ namespace Perspex.Cairo.Media
/// A disposable used to undo the transformation.
public IDisposable PushTransform(Matrix matrix)
{
- this.context.Save();
this.context.Transform(matrix.ToCairo());
- this.CurrentTransform *= matrix;
- return Disposable.Create(() =>
+ return Disposable.Create(() =>
{
- this.context.Restore();
- this.CurrentTransform *= matrix.Invert();
+ this.context.Transform(matrix.Invert().ToCairo());
});
}