diff --git a/src/render.c b/src/render.c
index cfb40eb..674dc75 100644
--- a/src/render.c
+++ b/src/render.c
@@ -46,6 +46,7 @@ static GLuint FrameBufferTexId;
 static GLuint ScaleVBOs[3], ScaleVAO;
 static BOOL UseOpenGL;
 static BOOL AdjustAlignment;
+static BOOL FilterBilinear;
 
 static HGLRC CreateContext(HDC hdc);
 static void SetMaxFPS();
@@ -176,6 +177,8 @@ static void BuildPrograms()
             ScaleProgram = OpenGL_BuildProgramFromFile(ddraw->shader);
         else
             OpenGL_GotVersion3 = FALSE;
+
+        FilterBilinear = strstr(ddraw->shader, "bilinear.glsl") != 0;
     }
 
     if (OpenGL_GotVersion2 && !MainProgram)
@@ -485,8 +488,8 @@ static void InitScaleProgram()
 
     glGenTextures(1, &FrameBufferTexId);
     glBindTexture(GL_TEXTURE_2D, FrameBufferTexId);
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, FilterBilinear ? GL_LINEAR : GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, FilterBilinear ? GL_LINEAR : GL_NEAREST);
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, SurfaceTexWidth, SurfaceTexHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 
     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, FrameBufferTexId, 0);