OriginX/Y alignes the images's center of origin with the surrounding's frame's center of origin. This is necessary because a fullscreen image has different width/height than the screen and its center of origin is somewhere else entirely. This is especially need for scaling. (if scaling is not done from the center another offest is introduced to the image's trnaslation)
See this sketch for a cleared explanation. (I roughly marked the center of origin's for the respective elements)
https://bugzilla.mozilla.org/attachment.cgi?id=795609

top and left control the translation of the newly create "translationLayer" and serve the same purpose the did before. The are responsible for moving the whole image around ("panning") and their meaning did not change. Once an image's center of origin is aligned to it's surrounding frame ("translatinLayer") it can be moved around just like it used to be with unrotated images. The advantage here is that scaling, translation to origin and rotating of the image only have to be done once (and when height/width change) and all the reguar translation ("panning") can be applied to a different layer without touching any of the other transformations.
Another sketch for clarity:
https://bugzilla.mozilla.org/attachment.cgi?id=795610

I tried to explain some of of that in my email from last week. Also the attached prototype let's you try this kind of abstraction in an easier context.
I am going to make some more comments to the code to clarify these changes.