I think you’re just seeing the effect of delayed pricing information that is inherent in the system unless you’re paying for real-time pricing.
First, you have to realise that the price Freetrade shows you before you execute a trade isn’t a ‘quote’. Actually I’m not certain what it is! Some people have said it’s the mid-point between the latest available bid and ask prices (delayed at least 15 minutes, of course), but I don’t think I’ve actually seen Freetrade state that for certain. I suspect it’s more likely to be the price of the last completed trade, again delayed. (If anyone reading this can authoritatively say what the price actually is, I would be grateful to know!)
Then, you have to understand bid/ask prices – it’s good that you were looking at those, many people don’t realise that they should! But you’re comparing the bid/ask from one source, which is delayed by an uncertain amount, with the price that Freetrade shows you, which is also delayed by an uncertain but probably different amount. So it’s not surprising that they don’t match up exactly.
The price of NG shares was moving quickly this morning, down by almost 1% and then up by 0.6% within an hour and a half. You saw a bid-ask spread of 926.20/926.40; half an hour later I looked and saw a spread of 929.60/929.90. So if you executed a trade during that time, I’d expect it to go through at a price somewhere in that neighbourhood, but not necessarily exactly at any of those prices.
Frankly, if you’re trying to catch fairly small and rapid price swings in real time, and do it precisely, Freetrade is not the right tool for that job. You really need to pay the price for a real-time trading system. (You could consider upgrading to Plus so that you can use limit orders if you want to have tighter control than Freetrade’s ‘instant orders’, but limit orders don’t help you chase a fast-moving price; what they are good for, though, is setting your desired price so that you can wait for the moving share price to come to you.)