DEADSOFTWARE

gl: fix rect drawing
authorDeaDDooMER <deaddoomer@deadsoftware.ru>
Wed, 15 Feb 2023 18:39:52 +0000 (21:39 +0300)
committerDeaDDooMER <deaddoomer@deadsoftware.ru>
Fri, 9 Jun 2023 09:13:40 +0000 (12:13 +0300)
src/game/renders/opengl/r_draw.pas
src/game/renders/opengl/r_map.pas
src/game/renders/opengl/r_render.pas

index fdb7c09ec1da8e08f639e21a26f4c26878473c89..324d0a2d27be2038802edc1fb9dec6f723e9fcd5 100644 (file)
@@ -283,86 +283,96 @@ implementation
       r_Draw_MultiTextureRepeat(m, anim, backanim, x, y, w, h, flip, r, g, b, a, blend);
   end;
 
-  procedure r_Draw_Filter (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
+  procedure r_Draw_Rect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
   begin
-    ASSERT(r >= l);
-    ASSERT(b >= t);
-    glEnable(GL_BLEND);
-    glBlendFunc(GL_ZERO, GL_SRC_COLOR);
-    r_Draw_EnableTexture2D(false);
-    r_Draw_SetColor(rr, gg, bb, aa);
-    glBegin(GL_QUADS);
-      glVertex2i(l, t);
-      glVertex2i(r, t);
-      glVertex2i(r, b);
-      glVertex2i(l, b);
-    glEnd;
+    ASSERT(l <= r);
+    ASSERT(t <= b);
+    if (l < r) and (t < b) then
+    begin
+      glEnable(GL_BLEND);
+      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+      r_Draw_EnableTexture2D(false);
+      r_Draw_SetColor(rr, gg, bb, aa);
+      glBegin(GL_QUADS);
+        (* top *)
+        glVertex2i(l, t);
+        glVertex2i(r, t);
+        glVertex2i(r, t+1);
+        glVertex2i(l, t+1);
+        (* bottom *)
+        glVertex2i(l, b-1);
+        glVertex2i(r, b-1);
+        glVertex2i(r, b);
+        glVertex2i(l, b);
+        (* left *)
+        glVertex2i(l,   t+1);
+        glVertex2i(l+1, t+1);
+        glVertex2i(l+1, b-1);
+        glVertex2i(l,   b-1);
+        (* right *)
+        glVertex2i(r-1, t+1);
+        glVertex2i(r,   t+1);
+        glVertex2i(r,   b-1);
+        glVertex2i(r-1, b-1);
+      glEnd;
+    end;
   end;
 
-  procedure r_Draw_Rect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
+  procedure r_Draw_FillRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
   begin
-    ASSERT(r >= l);
-    ASSERT(b >= t);
-    glEnable(GL_BLEND);
-    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-    r_Draw_EnableTexture2D(false);
-    r_Draw_SetColor(rr, gg, bb, aa);
-    glBegin(GL_LINE_LOOP);
-{
-      glVertex2i(l, t);
-      glVertex2i(r, t);
-      glVertex2i(r, b);
-      glVertex2i(l, b);
-}
-      glVertex2f(l + 0.5, t + 0.5);
-      glVertex2f(r - 0.5, t + 0.5);
-      glVertex2f(r - 0.5, b - 0.5);
-      glVertex2f(l + 0.5, b - 0.5);
-    glEnd;
+    ASSERT(l <= r);
+    ASSERT(t <= b);
+    if (l < r) and (t < b) then
+    begin
+      glEnable(GL_BLEND);
+      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+      r_Draw_EnableTexture2D(false);
+      r_Draw_SetColor(rr, gg, bb, aa);
+      glBegin(GL_QUADS);
+        glVertex2i(l, t);
+        glVertex2i(r, t);
+        glVertex2i(r, b);
+        glVertex2i(l, b);
+      glEnd;
+    end;
   end;
 
-  procedure r_Draw_FillRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
+  procedure r_Draw_Filter (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
   begin
-    ASSERT(r >= l);
-    ASSERT(b >= t);
-    glEnable(GL_BLEND);
-    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-    r_Draw_EnableTexture2D(false);
-    r_Draw_SetColor(rr, gg, bb, aa);
-    glBegin(GL_QUADS);
-{
-      glVertex2i(l, t);
-      glVertex2i(r, t);
-      glVertex2i(r, b);
-      glVertex2i(l, b);
-}
-{
-      glVertex2f(l + 0.5, t + 0.5);
-      glVertex2f(r - 0.5, t + 0.5);
-      glVertex2f(r - 0.5, b - 0.5);
-      glVertex2f(l + 0.5, b - 0.5);
-}
-      glVertex2f(l + 0, t + 0);
-      glVertex2f(r + 0.75, t + 0);
-      glVertex2f(r + 0.75, b + 0.75);
-      glVertex2f(l + 0, b + 0.75);
-    glEnd;
+    ASSERT(l <= r);
+    ASSERT(t <= b);
+    if (l < r) and (t < b) then
+    begin
+      glEnable(GL_BLEND);
+      glBlendFunc(GL_ZERO, GL_SRC_COLOR);
+      r_Draw_EnableTexture2D(false);
+      r_Draw_SetColor(rr, gg, bb, aa);
+      glBegin(GL_QUADS);
+        glVertex2i(l, t);
+        glVertex2i(r, t);
+        glVertex2i(r, b);
+        glVertex2i(l, b);
+      glEnd;
+    end;
   end;
 
   procedure r_Draw_InvertRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
   begin
-    ASSERT(r >= l);
-    ASSERT(b >= t);
-    glEnable(GL_BLEND);
-    glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
-    r_Draw_EnableTexture2D(false);
-    r_Draw_SetColor(rr, gg, bb, aa);
-    glBegin(GL_QUADS);
-      glVertex2i(l, t);
-      glVertex2i(r, t);
-      glVertex2i(r, b);
-      glVertex2i(l, b);
-    glEnd;
+    ASSERT(l <= r);
+    ASSERT(t <= b);
+    if (l < r) and (t < b) then
+    begin
+      glEnable(GL_BLEND);
+      glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
+      r_Draw_EnableTexture2D(false);
+      r_Draw_SetColor(rr, gg, bb, aa);
+      glBegin(GL_QUADS);
+        glVertex2i(l, t);
+        glVertex2i(r, t);
+        glVertex2i(r, b);
+        glVertex2i(l, b);
+      glEnd;
+    end;
   end;
 
   procedure r_Draw_Text (const text: AnsiString; x, y: Integer; r, g, b, a: Byte; f: TGLFont);
index 326fcd0e4317b77693e6174d74fbfb2e4cf58fb2..5513d688256169d2c8dcfe0994e945d36912bc5d 100644 (file)
@@ -819,19 +819,31 @@ implementation
   end;
 
   procedure r_Map_DrawBubble (x, y: Integer; cb, cf: TRGB);
-    var dot: Integer;
+    const w = 20; h = 14;
+    const dx = 6; dy = 8; dot = 6; size = 2;
+    const tx = 6; ty = h - 1;
   begin
-    // Outer borders
-    r_Draw_Rect(x + 1, y,     x + 18, y + 13, cb.R, cb.G, cb.B, 255);
-    r_Draw_Rect(x,     y + 1, x + 19, y + 12, cb.R, cb.G, cb.B, 255);
+    // Outer box (top/down)
+    r_Draw_FillRect(x + 1, y,         x + w - 1, y + 1, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + 1, y + h - 1, x + w - 1, y + h, cb.R, cb.G, cb.B, 255);
+    // Outer box (left/right)
+    r_Draw_FillRect(x,         y + 1, x + 1, y + h - 1, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + w - 1, y + 1, x + w, y + h - 1, cb.R, cb.G, cb.B, 255);
+    // Outer tail
+    r_Draw_FillRect(x + tx - 1, y + ty + 0, x + tx + 3 + 1, y + ty + 1, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + tx - 1, y + ty + 1, x + tx + 2 + 1, y + ty + 2, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + tx - 1, y + ty + 2, x + tx + 1 + 1, y + ty + 3, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + tx - 1, y + ty + 3, x + tx + 0 + 1, y + ty + 4, cb.R, cb.G, cb.B, 255);
+    // Inner tail
+    r_Draw_FillRect(x + tx, y + ty + 0, x + tx + 3, y + ty + 1, cf.R, cf.G, cf.B, 255);
+    r_Draw_FillRect(x + tx, y + ty + 1, x + tx + 2, y + ty + 2, cf.R, cf.G, cf.B, 255);
+    r_Draw_FillRect(x + tx, y + ty + 2, x + tx + 1, y + ty + 3, cf.R, cf.G, cf.B, 255);
     // Inner box
-    r_Draw_FillRect(x + 1, y + 1, x + 18, y + 12, cf.R, cf.G, cf.B, 255);
-    // TODO Tail
+    r_Draw_FillRect(x + 1, y + 1, x + w - 1, y + h - 1, cf.R, cf.G, cf.B, 255);
     // Dots
-    dot := 6;
-    r_Draw_FillRect(x + dot + 0, y + 8, x + dot + 0 + 1 + 1, y + 9 + 1, cb.R, cb.G, cb.B, 255);
-    r_Draw_FillRect(x + dot + 3, y + 8, x + dot + 3 + 1 + 1, y + 9 + 1, cb.R, cb.G, cb.B, 255);
-    r_Draw_FillRect(x + dot + 6, y + 8, x + dot + 6 + 1 + 1, y + 9 + 1, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + dx + 0*3, y + dy, x + dx + 0*3 + size, y + dy + size, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + dx + 1*3, y + dy, x + dx + 1*3 + size, y + dy + size, cb.R, cb.G, cb.B, 255);
+    r_Draw_FillRect(x + dx + 2*3, y + dy, x + dx + 2*3 + size, y + dy + size, cb.R, cb.G, cb.B, 255);
   end;
 
   procedure r_Map_DrawTalkBubble (p: TPlayer);
@@ -1506,10 +1518,10 @@ implementation
     r_Map_DrawGame(xx, yy, ww, hh, player);
     if FillOutsizeArea and (DebugCameraScale = 1.0) then
     begin
-      r_Draw_FillRect(0 - limit, 0 - limit, gMapInfo.Width + limit, 0 - 1, 0, 0, 0, 255);
-      r_Draw_FillRect(0 - limit, 0, 0 - 1, gMapInfo.Height + limit, 0, 0, 0, 255);
-      r_Draw_FillRect(gMapInfo.Width, 0, gMapInfo.Width + limit, gMapInfo.Height + limit, 0, 0, 0, 255);
-      r_Draw_FillRect(0 - limit, gMapInfo.Height, gMapInfo.Width + limit, gMapInfo.Height + limit, 0, 0, 0, 255);
+      (* top    *) r_Draw_FillRect(0 - limit, 0 - limit, gMapInfo.Width + limit, 0, 0, 0, 0, 255);
+      (* left   *) r_Draw_FillRect(0 - limit, 0, 0, gMapInfo.Height + limit, 0, 0, 0, 255);
+      (* right  *) r_Draw_FillRect(gMapInfo.Width, 0, gMapInfo.Width + limit, gMapInfo.Height + limit, 0, 0, 0, 255);
+      (* bottom *) r_Draw_FillRect(0 - limit, gMapInfo.Height, gMapInfo.Width + limit, gMapInfo.Height + limit, 0, 0, 0, 255);
     end;
     glTranslatef(cx, cy, 0);
   end;
index 7ef7d7b95424119026bfd31aee8caf44420976bd..d63137edc2aae8f48fd46c2441c9753e4f807a2c 100644 (file)
@@ -473,33 +473,33 @@ implementation
     r_Draw_GetTextSize('W', stdfont, cw, ch);
     motdh := gScreenHeight - 49 - ch * b_Text_LineCount(slMOTD);
 
-    r_Draw_FillRect(16, 64, gScreenWidth - 16, motdh, 64, 64, 64, 145);
-    r_Draw_Rect(16, 64, gScreenWidth - 16, motdh, 255, 127, 0, 255);
+    (* window background *)
+    r_Draw_Rect(16, 64, gScreenWidth - 16, motdh + 1, 255, 127, 0, 255);
+    r_Draw_FillRect(16 + 1, 64 + 1, gScreenWidth - 16 - 1, motdh, 64, 64, 64, 145);
 
     r_Common_DrawText(_lc[I_NET_SLIST_HELP], gScreenWidth div 2, gScreenHeight - 8, 255, 255, 255, 255, stdfont, TBasePoint.BP_DOWN);
 
     if slMOTD <> '' then
     begin
-      r_Draw_FillRect(16, motdh, gScreenWidth - 16, gScreenHeight - 44, 64, 64, 64, 110);
       r_Draw_Rect(16, motdh, gScreenWidth - 16, gScreenHeight - 44, 255, 127, 0, 255);
+      r_Draw_FillRect(16 + 1, motdh + 1, gScreenWidth - 16 - 1, gScreenHeight - 44 - 1, 64, 64, 64, 145);
       r_Common_DrawFormatText(slMOTD, 20, motdh + 3, 255, stdfont, TBasePoint.BP_LEFTUP);
     end;
 
     if not slReadUrgent and (slUrgent <> '') then
     begin
-      r_Draw_FillRect(17, 65, gScreenWidth - 17, motdh - 1, 64, 64, 64, 127);
-      r_Draw_FillRect(scrx - 256, scry - 60, scrx + 256, scry + 60, 64, 64, 64, 127);
-      r_Draw_Rect(scrx - 256, scry - 60, scrx + 256, scry + 60, 255, 127, 0, 255);
-      r_Draw_FillRect(scrx - 256, scry - 40, scrx + 256, scry - 40, 255, 127, 0, 255);
+      r_Draw_Rect(scrx - 256, scry - 60, scrx + 256, scry + 60 + 1, 255, 127, 0, 255);
+      r_Draw_FillRect(scrx - 256 + 1, scry - 60 + 1, scrx + 256 - 1, scry + 60, 64, 64, 64, 127);
+      r_Draw_FillRect(scrx - 256, scry - 40, scrx + 256, scry - 40 + 1, 255, 127, 0, 255);
+      r_Draw_FillRect(scrx - 256, scry + 40, scrx + 256, scry + 40 + 1, 255, 127, 0, 255);
       r_Common_DrawText(_lc[I_NET_SLIST_URGENT], scrx, scry - 58, 255, 255, 255, 255, stdfont, TBasePoint.BP_UP);
-      r_Common_DrawFormatText(slUrgent, scrx - 253, scry - 38, 255, stdfont, TBasePoint.BP_LEFTUP);
       r_Common_DrawText(_lc[I_NET_SLIST_URGENT_CONT], scrx, scry + 41, 255, 255, 255, 255, stdfont, TBasePoint.BP_UP);
-      r_Draw_FillRect(scrx - 256, scry + 40, scrx + 256, scry + 40, 255, 127, 0, 255);
+      r_Common_DrawFormatText(slUrgent, scrx - 253, scry - 38, 255, stdfont, TBasePoint.BP_LEFTUP);
     end
     else if SL = nil then
     begin
-      r_Draw_FillRect(17, 65, gScreenWidth - 17, motdh - 1, 64, 64, 64, 127);
-      r_Draw_Rect(scrx - 192, scry - 10, scrx + 192, scry + 11, 255, 127, 0, 255);
+      r_Draw_Rect(scrx - 192, scry - 10, scrx + 192, scry + 10, 255, 127, 0, 255);
+      r_Draw_FillRect(scrx - 192 + 1, scry - 10 + 1, scrx + 192 - 1, scry + 10 - 1, 64, 64, 64, 145);
       r_Common_DrawText(slWaitStr, scrx, scry, 255, 255, 255, 255, stdfont, TBasePoint.BP_CENTER);
     end
     else
@@ -517,17 +517,20 @@ implementation
       mw := gScreenWidth - 188;
       mx := 16 + mw;
 
-      r_Draw_FillRect(16 + 1, sy, gScreenWidth - 16 - 1, sy + 40, 64, 64, 64, 255);
-      r_Draw_FillRect(16 + 1, sy, gScreenWidth - 16 - 1, sy, 205, 205, 205, 255);
-      r_Draw_FillRect(16 + 1, sy + 41, gScreenWidth - 16 - 1, sy + 41, 255, 255, 255, 255);
+      (* current selection *)
+      r_Draw_FillRect(16 + 1, sy + 1,      gScreenWidth - 16 - 1, sy + 1 + 40,     64, 64, 64, 255);
+      r_Draw_FillRect(16 + 1, sy,          gScreenWidth - 16 - 1, sy + 1,          255, 255, 255, 255);
+      r_Draw_FillRect(16 + 1, sy + 1 + 40, gScreenWidth - 16 - 1, sy + 1 + 40 + 1, 255, 255, 255, 255);
 
-      r_Draw_FillRect(16, 85, gScreenWidth - 16, 85, 255, 127, 0, 255);
-      r_Draw_FillRect(16, motdh - 20, gScreenWidth - 16, motdh - 20, 255, 127, 0, 255);
+      (* line separators for name/ping/mode.. & address/pasword *)
+      r_Draw_FillRect(16, 85, gScreenWidth - 16, 85 + 1, 255, 127, 0, 255);
+      r_Draw_FillRect(16, motdh - 20, gScreenWidth - 16, motdh - 20 + 1, 255, 127, 0, 255);
 
-      r_Draw_FillRect(mx - 70, 64, mx - 70, motdh, 255, 127, 0, 255);
-      r_Draw_FillRect(mx, 64, mx, motdh - 20, 255, 127, 0, 255);
-      r_Draw_FillRect(mx + 52, 64, mx + 52, motdh - 20, 255, 127, 0, 255);
-      r_Draw_FillRect(mx + 104, 64, mx + 104, motdh - 20, 255, 127, 0, 255);
+      (* column separators for name/ping/mode/players/version *)
+      r_Draw_FillRect(mx - 70,  64 + 1, mx - 70 + 1,  motdh, 255, 127, 0, 255);
+      r_Draw_FillRect(mx,       64 + 1, mx + 1,       motdh - 20, 255, 127, 0, 255);
+      r_Draw_FillRect(mx + 52,  64 + 1, mx + 52 + 1,  motdh - 20, 255, 127, 0, 255);
+      r_Draw_FillRect(mx + 104, 64 + 1, mx + 104 + 1, motdh - 20, 255, 127, 0, 255);
 
       r_Common_DrawText('NAME/MAP', 18, 68, 255, 127, 0, 255, stdfont, TBasePoint.BP_LEFTUP);
       r_Common_DrawText('PING', mx - 68, 68, 255, 127, 0, 255, stdfont, TBasePoint.BP_LEFTUP);
@@ -601,7 +604,7 @@ implementation
          INC(yy, ch);
 
          INC(yy, ch div 4);
-         r_Draw_FillRect(x, yy, x + w - 1, yy, r, g, b, 255);
+         r_Draw_FillRect(x, yy, x + w, yy + 1, r, g, b, 255);
          INC(yy, ch div 4);
 
          for i := 0 to players - 1 do
@@ -655,7 +658,7 @@ implementation
         end;
 
         // Player color
-        r_Draw_Rect(x, yy, x + 16 - 1, yy + 16 - 1, 192, 192, 192, 255);
+        r_Draw_Rect(x, yy, x + 16, yy + 16, 192, 192, 192, 255);
         r_Draw_FillRect(x + 1, yy + 1, x + 16 - 1, yy + 16 - 1, cs.PlayerStat[i].Color.R, cs.PlayerStat[i].Color.G, cs.PlayerStat[i].Color.B, 255);
         // Player name
         if gShowPIDs then s := Format('[%5d] %s', [cs.PlayerStat[i].UID, cs.PlayerStat[i].Name]) else s := cs.PlayerStat[i].Name;
@@ -684,8 +687,8 @@ implementation
   begin
     xoff := 0; yoff := 8;
     r_Draw_GetTextSize('W', stdfont, cw, ch);
-    r_Draw_FillRect(x, y, x + w - 1, y + h - 1, 64, 64, 64, 224);
-    r_Draw_Rect(x, y, x + w - 1, y + h - 1, 255, 127, 0, 255);
+    r_Draw_Rect(x, y, x + w, y + h, 255, 127, 0, 255);
+    r_Draw_FillRect(x + 1, y + 1, x + w - 1, y + h - 1, 64, 64, 64, 224);
 
     (* LINE 1 *)
 
@@ -984,8 +987,8 @@ implementation
     begin
       x0 := x + xx div scale;
       y0 := y + yy div scale;
-      x1 := x + (xx + ww - 1) div scale;
-      y1 := y + (yy + hh - 1) div scale;
+      x1 := x + (xx + ww) div scale;
+      y1 := y + (yy + hh) div scale;
       r_Draw_FillRect(x0, y0, x1, y1, r, g, b, alpha);
     end;
 
@@ -1052,7 +1055,7 @@ implementation
     end;
 
   begin
-    r_Draw_FillRect(x, y, (x + gMapInfo.Width - 1) div scale, (y + gMapInfo.Height - 1) div scale, 0, 0, 0, alpha);
+    r_Draw_FillRect(x, y, (x + gMapInfo.Width) div scale, (y + gMapInfo.Height) div scale, 0, 0, 0, alpha);
     DrawPanels(gSteps);
     DrawPanels(gLifts);
     DrawPanels(gWater);
@@ -1170,7 +1173,7 @@ implementation
 
     if gPauseMain and gGameOn {$IFDEF ENABLE_MENU}and (g_ActiveWindow = nil){$ENDIF} then
     begin
-      r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, 105);
+      r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, 105);
       r_Common_DrawText(_lc[I_MENU_PAUSE], gScreenWidth div 2, gScreenHeight div 2, 255, 255, 255, 255, menufont, TBasePoint.BP_CENTER);
     end;
 
@@ -1183,7 +1186,7 @@ implementation
         STATE_FOLD:
         begin
           if EndingGameCounter > 0 then
-            r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, MIN(MAX(255 - EndingGameCounter, 0), 255));
+            r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, MIN(MAX(255 - EndingGameCounter, 0), 255));
         end;
         STATE_INTERCUSTOM:
         begin
@@ -1199,14 +1202,14 @@ implementation
 
           {$IFDEF ENABLE_MENU}
             if g_ActiveWindow <> nil then
-              r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, 105);
+              r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, 105);
           {$ENDIF}
         end;
         STATE_INTERSINGLE, STATE_INTERTEXT, STATE_INTERPIC:
         begin
           if EndingGameCounter > 0 then
           begin
-            r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, MIN(MAX(255 - EndingGameCounter, 0), 255));
+            r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, MIN(MAX(255 - EndingGameCounter, 0), 255));
           end
           else
           begin
@@ -1214,7 +1217,7 @@ implementation
             r_Render_DrawSingleStats;
             {$IFDEF ENABLE_MENU}
               if g_ActiveWindow <> nil then
-                r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, 105);
+                r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, 105);
             {$ENDIF}
           end;
         end;
@@ -1226,13 +1229,13 @@ implementation
             r_Common_DrawBackground(GameWad + ':TEXTURES/' + _lc[I_TEXTURE_ENDPIC]);
           {$IFDEF ENABLE_MENU}
             if g_ActiveWindow <> nil then
-              r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, 105);
+              r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, 105);
           {$ENDIF}
         end;
         STATE_SLIST:
         begin
           r_Common_DrawBackground(GameWad + ':TEXTURES/TITLE');
-          r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, 105);
+          r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, 105);
           r_Render_DrawServerList(slCurrent, slTable);
         end;
       end;
@@ -1242,7 +1245,7 @@ implementation
       if g_ActiveWindow <> nil then
       begin
         if gGameOn then
-          r_Draw_FillRect(0, 0, gScreenWidth - 1, gScreenHeight - 1, 0, 0, 0, 105);
+          r_Draw_FillRect(0, 0, gScreenWidth, gScreenHeight, 0, 0, 0, 105);
         r_GUI_Draw_Window(g_ActiveWindow);
       end;
     {$ENDIF}