Okay, just in case anyone else looks at this topic, it turns out that my working was correct and i was just using mislabled FOV reference images to test, which made me think otherwise!
The formula would be:
Or more simply, if you just want a scaling factor, treat the size of the original dimensions as 1, so:
Scaled size = ( tan ( FOV_scaling_TO / 2) * size_of_original_image_dimension ) / tan ( FOV_scaling_FROM / 2 )
Scaling factor = tan( FOV_scaling_TO / 2) / tan( FOV_scaling_FROM / 2 )