The issue is incorrectly scaling pixels and trying to achieve "pixel-perfect scaling".
You can force 1:1 ratio by scaling either horizontally or vertically (whichever is larger distance between the players) first, and then scale up the other thing with the same scale, computed using the new and old values. But sprites will still look distorted if you don't scale with an integer scale.
I like your idea of zooming IN instead of zooming out... usually looks bettter to zoom in. Except, things look quite pixelated up close.
Another idea is to just make the game so fast-paced nobody gets time to stop and watch the graphics distort because they're busy playing. As long as they can distinguish their character from the enemies even when distorted, you should be fine.
So basically I should try to keep the aspect ratio of the view_wview/hview to match the view_wport/hport?
Currently it does zoom in. The view starts off with 512x384 and then zooms in to a max of 344x256.
Unfortunately the distortion is so bad it's noticeable even if it is fast paced. But if I could minimize the distortion to as little as possible then that's basically what I'll be aiming to do -- making it fast paced so nobody analyses the little quirks with scaling.