The drone has two things potentially limiting its speed.
- Raw aerodynamics along with available power
- Software, combined with GPS input.
If it were just the first issue, then it would be simple: the drone has a max speed through the air, and smooth air carries everything, including the moving drone, along at a fixed windspeed. Just add the wind vector to the vector describing the drone's velocity through the air.
But the software can make it more complicated.
Consider that with your hands off the sticks, the drone hovers in still air. Add a 5mph steady wind, and the drone still hovers at 0mph ground speed! It maintains that 0mph ground speed up to its limit.
When the stick is pushed just a little bit in any direction, the drone moves with a small ground speed, regardless of wind speed (until the wind is just too strong).
It's clearly not being simply carried by the wind at low wind speeds and small stick movements. The software attempts to let us ignore the wind and pretend we're flying in still air. But it can't maintain that illusion forever. With high enough wind speeds, the drone gets blown downwind, regardless of the software.
The original question could be answered if we knew exactly how hard the software attempted to maintain the illusion that we're flying through still air, and how it behaved as it approached conditions where the illusion couldn't be maintained.
I don't have the source code. I don't know the answer.