-ceil

The behavior of `-ceil` on `CGPoint` values is pretty confusing, but correct:

> CGPoint values are rounded using floor(), matching the behavior that CGRectIntegral() has upon rect origins.

When considering the point as the origin of a rectangle (which it usually is), it's necessary to round the origin _down_ at the same time that you're rounding the size _up_ in order for the whole rectangle to be ceiled.

This is what the `CGRectIntegral()` documentation means by (emphasis mine):

> A rectangle with the smallest integer values for its origin and size **that contains the source rectangle**.