A technique I've used for transferring fastener hole locations to make brackets might work: for each hole you want to transfer you take a screw for that hole, cut off the head, and grind where the head was to a sharp point. Usually I do this by chucking the headless screw into a drill and then spinning it while grinding on a bench grinder. Done carefully this forces the point to be on the centerline of the screw, which is important.
Then you screw that with your fingers into the hole so it is just proud of the surface. Then you take your new window, position it where you want it and *very* carefully lay it down on all the little sharp points. Without moving it you go around and tap it in order to get the sharp points to make an impression in the new window.
Needless to say there are lots of ways for this to go wrong, like letting the window move and thus scratching it, or getting multiple inconsistent impressions, or tapping too hard and pushing one of the fasteners or nutserts through, or not being able to unscrew one of the headless pointed fasteners. To mitigate some of that you could tape the window in position by only it's top edge, and then fold it up onto the roof while inserting the pointed screws. IAE I'm sure it would be much easier with a friend or two to help.
A variant would be to use a piece of cardboard to pick up the impression of the points, and then use that as a template on the windows. That prevents you from ruining the window while transferring the hole locations
Going back to Scott's suggestion: I was worried about trying to use the old window as a template because it's not flat. However, if your windows are like my SPF's windows (rather flexible) if you stack the windows and then flatten them (eg a friend pushing down a towel-covered board smaller than the window) I think you could get accurate results using the old windows as a template.