Global Mapper v25.0

Differences when converting UTM19 NAD27 to NAD83 between GM and Proj (GDAL)

I cannot get any transform from UTM19 NAD27 to UTM19 NAD83 to produce similar results between Global Mapper and (even after downloading all grid shifts, and stepping through everything else in Proj.) At this point, it's very difficult to say which is even correct - GM or Proj or, since really this is about understanding, quantify why they're different. These results replicate with any reprojection in higher-level GIS code (e.g. python GDAL) built on top of C++ Proj, which is, err, a lot.

We have some data in the Dominican Republic, which our client would like presented in UTM19 NAD83. To save writing UTM19 lots of times, assume that everything here is UTM19, but we're going to talk NAD27 and NAD83 a lot.

Unfortunately much older data is in UTM19 NAD27, and the Dominican republic is right at the extreme SE corner of that projection's well-defined area. In these cases, when transforming from NAD27 to NAD83, Global Mapper produces significantly different (in some cases hundreds of metres different.)

That's not a huge problem. What's more of a problem is that some of the older data has been converted to from NAD27 to NAD83 already, and some of it has had that done with GM, and some with "things built on top of C++ Proj" (typically python GDAL warps).

Are you able to replicate this, and are you able to explain / quantify the differences? I'm sure global mapper is "right", but it would be great to have an explanation of why.