diff --git a/src/renderer.c b/src/renderer.c
index 897857d04abc91085db08fd40c0b8d7dec66fc79..34cd2ea53450269cc8006618b40dba6e3e5b92dc 100644
--- a/src/renderer.c
+++ b/src/renderer.c
@@ -628,9 +628,7 @@ static struct sampler_info sample_src_info(struct pass_state *pass,
         return info;
     }
 
-    if (!pass->fbofmt[4] || (rr->errors & PL_RENDER_ERR_SAMPLING) ||
-        !info.config)
-    {
+    if ((rr->errors & PL_RENDER_ERR_SAMPLING) || !info.config) {
         info.type = SAMPLER_DIRECT;
     } else if (info.config->kernel == &pl_filter_function_oversample) {
         info.type = SAMPLER_OVERSAMPLE;
@@ -652,6 +650,10 @@ static struct sampler_info sample_src_info(struct pass_state *pass,
         }
     }
 
+    // Disable advanced scaling without FBOs
+    if (!pass->fbofmt[4] && info.type == SAMPLER_COMPLEX)
+        info.type = SAMPLER_DIRECT;
+
     return info;
 }