Hi, I would like to discuss something that just came to my mind. In SFML, the origins of graphical objects -- accessed with sf::Transformable::setOrigin() and sf::Transformable::getOrigin() -- are stored as coordinates in the local coordinate system, with same scale (but different origin) as the global coordinate system.
Have you ever considered a fractional approach instead? That is, origins that lie inside the object have values in [0, 1]. To get the coordinates, the origins are multiplied with the object size (retrieved via getLocalBounds()). I know this doesn't perfectly fit into the current sf::Transformable API, since size is not part of it, but it's more a general consideration.
The advantage of fractional values is the consequence that a texture's (or generally object's) size and origin become orthogonal properties, one doesn't depend on the other. Thus, it becomes very easy to express proportions. For example, a centered origin would be (0.5, 0.5), the right-upper corner would be (1, 0). On the downside, absolute distances are more difficult to express, like "10 pixels past the right border". But they depend already now on the local rect, one cannot make them orthogonal properties anyway.