I do not understand the difficulty.
There are two datapoints - position and time - distance and time --> Speed
The Garmin app calculates the speed - most probably - in the same way. Maybe with even some more smoothing algorithms - I don't know.
I have imported .FIT file from Garmin and see the Speed for Skiing activity being way too high.
The watch was showing realistic highest speed at about 72 km/h but Runalyze shows 96,8 km/h peeks in the area "pace data".
It was imported today.