The difference in the speeds is due to the speedometer head itself. The needle is moved by a magnet. The magnet is cable driven. As the speeds increase, the small spring attached to the needle is over come by the magnetic pull and the needle moves. Over time, the spring and/or magnet loose power and the speedometers ability to maintain an accurate reading goes away.
Figure out where you are going to drive the most, say in town or on the highway, then have the speedometer calibrated to that speed. Anything above or below may be off, but at your chosen speed it will be accurate.

Most any decent speedometer shop can build a adaptor to compensate for the gear change. They may even have new speedometer gears for the transmission, depending on what you have.

Your odometer is gear driven right off the cable, so it will read the same no matter what speeds you drive. If you can drive a ten mile stretch, you will be able to figure out the amount of error. This along with your GPS information will be enough for the adaptor to be built.

Joe