--- a/scantpaper/tests/test_7_canvas.py
+++ b/scantpaper/tests/test_7_canvas.py
@@ -1935,9 +1935,9 @@
 @pytest.mark.parametrize(
     "num_words,max_time_ms",
     [
-        (100, 100),  # Small page: should be very fast
-        (500, 300),  # Typical A4 page: ~35ms expected, allow 150ms headroom
-        (1000, 600),  # Large page: ~67ms expected, allow 250ms headroom
+        (100, 300),  # Small page: should be very fast
+        (500, 1500),  # Typical A4 page: ~35ms expected, allow 150ms headroom
+        (1000, 3000),  # Large page: ~67ms expected, allow 250ms headroom
     ],
 )
 def test_canvas_performance(rose_pnm, num_words, max_time_ms):
@@ -1963,7 +1963,7 @@
             sorted_word_indices=indices,
             finished_callback=lambda: mlp.quit(),
         )
-        GLib.timeout_add(2000, mlp.quit)
+        GLib.timeout_add(5000, mlp.quit)
         mlp.run()
         elapsed_ms = (time.time() - start) * 1000
 
@@ -2014,7 +2014,7 @@
                 sorted_word_indices=indices,
                 finished_callback=lambda: mlp.quit(),
             )
-            GLib.timeout_add(2000, mlp.quit)
+            GLib.timeout_add(5000, mlp.quit)
             mlp.run()
         except RecursionError:
             pytest.fail(
--- a/scantpaper/tests/test_411_tesseract.py
+++ b/scantpaper/tests/test_411_tesseract.py
@@ -71,7 +71,7 @@
         language="eng",
         finished_callback=lambda response: mlp.quit(),
     )
-    GLib.timeout_add(2000, mlp.quit)  # to prevent it hanging
+    GLib.timeout_add(5000, mlp.quit)  # to prevent it hanging
     mlp.run()
 
     page = slist.thread.get_page(number=1)
