UPoint transform(UPoint point, double? scale) { scale ??= 1.0; var x = scale * (a * point.x + b); var y = scale * (c * point.y + d); return UPoint(x, y); }