Scrivener correctly uses a 72DPI to convert pixels to points. But when it compiles to HTML it uses the assumption that CSS pixels also obey a 72DPI rule, but they do not.
The reference pixel is the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm's length. For a nominal arm's length of 28 inches, the visual angle is therefore about 0.0213 degrees. For reading at arm's length, 1px thus corresponds to about 0.26 mm (1/96 inch).
Therefore I think it needs to slight change the maths. Lets take a 1080image-pixel 300DPI image. You correctly convert this to become 259points in the editor [300 / 72 = 4.167 | 1080 / 4.167 = 259 points], which you directly export to the CSS px values when compiled to a HTML based format — BUT it actually should use [300 / 96 = 3.125 | 1080 / 3.125 = 346 px].