Axis-aligned rectangle in canvas coordinates.
NAMED Rect2D, NOT Rect, ON PURPOSE — do not "simplify" this back. Apple's MacTypes.h declares a GLOBAL struct Rect (and a global Point) for Carbon compatibility. Any translation unit that says using namespace pulp::canvas; AND transitively includes an Apple header then hits an unfixable ambiguity inside Apple's own headers:
MacTypes.h:556:16: error: reference to 'Rect' is ambiguous
note: candidate found by name lookup is 'pulp::canvas::Rect'
65 TUs in this repo use that using-directive. The name stayed survivable only while this header was rarely included; once Path (and therefore canvas.hpp) needed a rect type, it became visible nearly repo-wide and the collision became unavoidable. Point2D in affine_transform.hpp is named for exactly the same reason.