I'd better point out that this initial document has not yet been loaded into FrameMaker; Frame always saves the image size and resolution when it writes out the XML document. I'm using it as a starting point with nothing but the image source specified.
So we load the test document into Frame. It displays the image exactly as we want to see it - scaled to the width of the page:
Checking the properties for the graphical object, we can see that it has been resized to 16.087cm wide. Although the source image resolution was 96ppi, the properties report an "unknown" dpi, and also state that the image has been scaled at 44.83%. I'm not sure where that last percentage comes from.
When we save the document, the image element has its attributes filled in, and this is where it starts to go wrong:
456pt is 6.33in or 16.087cm so the size is correct. But the image is not 300dpi, it is 96dpi. This means that when we load the saved image back into Frame, the image no longer appears correctly:
The graphic properties reveal that the image now occupies a quarter of the available area: 8.611cm x 2.506cm, scaling 24%.