public void DeviceToUser(ref double x, ref double y)
{
Cairo.Matrix inv = (Cairo.Matrix) this.transformMatrix.Clone();
Cairo.Status cs = inv.Invert();
if (cs == Cairo.Status.Success)
{
inv.TransformPoint(ref x, ref y);
}
else
{
throw new Exception("Unable to transform device coordinates to user coordinates because the matrix was uninvertible (" + cs.ToString() + ").");
}
}