For me its important to have apertures defined in world coords.  The conversion to pixel coords is then "trivial" with wcslib, if one allows an arbitrarily shaped aperture.  I've already semi-volunteered to write PolygonAperture, which I think as long as one chooses enough vertices will cover this use case.  
Overall, defining apertures in world space is potentially safer/better, since one could imagine some image with distortion, where the scientifically correct thing to do for objects throughout the field would be the same aperture size on the sky, not in number of pixels.
Defining apertures in world space also makes performing matched photometry on different images natural instead of complicated.

In my mind, the aperture is a world-coord entity, and then that entity plus a specific image wcs yields an aperture in pixel space.    The pixel coords of an aperture only have meaning in the context of that specific image, whereas the aperture itself is more universal, like a Platonic ideal.