This is all down to the VIO algorithm. You'd be able to make major tweaks if you're postprocessing the data after, like detecting a reset and continuing from the last valid position (we do this in vvpx4), but changing the px4 params or other fusion techniques that only use the same sensors as the initial vio algorithm will likely not yield any improvements.
As for improving the vio algorithm itself, the QVIO's mvVISLAM package is proprietary code(even to us, we don't have the source) that we usually quote at 2% error over distance, which seems to match the test you've run here (you've flown a bit under 10 meters and it looks like you've drifted ~0.15-0.2 meters. We've been working on and experimenting with other algorithms internally, but don't have a hard date on when these will be fully tested/published. It's worth mentioning that most of our experimentation with these is to attempt to open-source our solution and add support for other features (like multiple cameras) but that generally the 2% error is considered very good especially in real-world environments.
The 2 main things you can do out of the box to ensure that your VIO is working as best it can are ensuring that it has accurate camera and imu calibrations, and that your extrinsics file is accurate.