According to the x-wedge installation guide, the speed is measured from pulses (on the right hand wheel of a 3w). The pulses are sent to the speedometer which processes the data and feeds it to the ecu.
So here's the thing:

I run a computer permenantly connected to the ecu which gives all the guages. The ecu road speed exactly matches the speed indicated on a seperate satnav, but the speedometer reads about 5mph fast. This means the wheel calibration is correct or the ecu would show the wrong speed too. So if you change any wheel calibration then you might get the needle to point to the right speed but the ecu will thing your going slower than you are. The ecu needs this speed data to turn on the fan when your going less than 10mph, it also records engine mileage which might be useful in the event of failure.

One other thing. If you frig the speedometer to read correctly then the recorded mileage will be out since there is only one set of data, your service interval will also be out. I am convinced it's all correct since the miles recorded on the speedo are pretty damn close to the distance the engine itself things it's gone. In addition the speedometer mileage always matches the satnav, the needle points slightly high.

Good luck with the fix but I think I would rather have the thing telling me I'm going slightly faster than I am to reduce the chance of getting done for speeding.

Just a thought