Speedometer off...

No one has suggested a instrument issue. When the speedometer and cable were new it would show a proper 5,7,10 mph. Does it?
As the cable develops a twisting twitch in its rotation and/or the clearances go away in the instrument,, it will show in the needle movement at very low speeds. Rather than read properly the needle will bounce from 0 to 10. The bounce disappears above 20 mph?
The fault is still present at higher speeds but doesn't reflect drastically, not seen in needle movement. The needle return spring is partial cause. Anyway…
You might pull the inst' panel and clean the crud out of the instruments input port, route the cable into it as straight/neutrally as possible, no forces applied in any direction, and hope to get more accurate readings at all speeds. The instrument will live longer also.
Sure you can get it closer with a drive gear change. You could also change it in the direction you need with a couple heavy coats of paint on the needle.
Continue the path you're on until you have no doubt the speedo drive gear is mathematically correct then consider the other cause of wrong speedometer reading. Good luck with it.