Whatever steps/mm setting is, retract/unretract should be in sync: length might be incorrect, but it should be the same in both directions.
Did you try at a lower speed? It may miss a few steps when doing unretract…
Could you also try to slowly increase the retract/unretract value, and see if there is a point when it suddenly start to fail?
Also, have a look at the G-Code fil to check if both values are the same! Don't you have an additional unretract negative value which may mess up things? If all seems ok, try to send both commands by hand, and measure how the filament moves after each command.