That speedo error is about right. Speed on the gauge is based on a sensor reading front chain sprocket, the ECU doesn't care. You take the speedometer reading with a grain of salt, especially if the front sprocket is smaller than stock.
All of the calculations on fueling comes from the RPM (IIRC, crank position sensor), Throttle Position Sensor, Gear Position Sensor and a goup of temperature/pressure sensors.