Since HFTs entered the market, it's become common that you only get filled when the trade moves against you—unless you cross the spread and make your order marketable. But regarding the IBKR paper account: the issue here is that the simulation should realistically assume the entire order is filled at 3.16. It's surprising that IBKR hasn't accounted for this, as it seems like a straightforward fix.
I'm not sure if this would help you in your case, but have you tried "all or none"? https://www.interactivebrokers.com/campus/trading-lessons/all-or-none-aon/
I think the best approach is simply to jump to live trading but with very small position size in order to ensure I can trust the fills.