diff --git a/src/swrenderer/things/r_playersprite.cpp b/src/swrenderer/things/r_playersprite.cpp index 7df655743ad..17fa146ed92 100644 --- a/src/swrenderer/things/r_playersprite.cpp +++ b/src/swrenderer/things/r_playersprite.cpp @@ -253,7 +253,7 @@ namespace swrenderer auto viewport = Thread->Viewport.get(); double pspritexscale = viewport->viewwindow.centerxwide / 160.0; - double pspriteyscale = pspritexscale * viewport->YaspectMul; + double pspriteyscale = pspritexscale * viewport->BaseYaspectMul; double pspritexiscale = 1 / pspritexscale; int tleft = tex->GetScaledLeftOffset(); diff --git a/src/swrenderer/viewport/r_viewport.cpp b/src/swrenderer/viewport/r_viewport.cpp index 783fc8f0df1..b243f226556 100644 --- a/src/swrenderer/viewport/r_viewport.cpp +++ b/src/swrenderer/viewport/r_viewport.cpp @@ -98,12 +98,14 @@ namespace swrenderer virtwidth = virtwidth * AspectMultiplier(viewwindow.WidescreenRatio) / 48; } + double ypixelstretch = (level.info) ? level.info->pixelstretch : 1.2; + BaseYaspectMul = 320.0 * virtheight2 / (r_Yaspect * virtwidth2); - YaspectMul = 320.0 * virtheight / (r_Yaspect * virtwidth); + YaspectMul = 320.0 * virtheight / (r_Yaspect * virtwidth) * ypixelstretch / 1.2; IYaspectMul = (double)virtwidth * r_Yaspect / 320.0 / virtheight; InvZtoScale = YaspectMul * CenterX; - WallTMapScale2 = IYaspectMul / CenterX; + WallTMapScale2 = IYaspectMul / CenterX * 1.2 / ypixelstretch; // thing clipping fillshort(screenheightarray, viewwidth, (short)viewheight);