diff --git a/src/main/java/bdv/viewer/render/MultiResolutionRenderer.java b/src/main/java/bdv/viewer/render/MultiResolutionRenderer.java
index 29f859a3339df7a03a265a5437edc37cdf7baf75..4eb37fa357a2c935fc8a567e0052ff3703064f40 100644
--- a/src/main/java/bdv/viewer/render/MultiResolutionRenderer.java
+++ b/src/main/java/bdv/viewer/render/MultiResolutionRenderer.java
@@ -122,14 +122,6 @@ public class MultiResolutionRenderer
 	 */
 	private final RenderStorage renderStorage;
 
-	/**
-	 * Target rendering time in nanoseconds. The rendering time for the coarsest
-	 * rendered scale should be below this threshold. After the coarsest scale,
-	 * increasingly finer scales are rendered, but these render passes may be
-	 * canceled (while the coarsest may not).
-	 */
-	private final long targetRenderNanos;
-
 	/**
 	 * Estimate of the time it takes to render one screen pixel from one source,
 	 * in nanoseconds.
@@ -157,8 +149,7 @@ public class MultiResolutionRenderer
 	/**
 	 * Whether the current rendering operation may be cancelled (to start a new
 	 * one). Rendering may be cancelled unless we are rendering at the
-	 * (estimated) coarsest screen scale meeting the rendering time
-	 * {@link #targetRenderNanos threshold}.
+	 * (estimated) coarsest screen scale meeting the rendering time threshold.
 	 */
 	private boolean renderingMayBeCancelled;
 
@@ -244,10 +235,9 @@ public class MultiResolutionRenderer
 		this.painterThread = painterThread;
 		projector = null;
 		currentScreenScaleIndex = -1;
-		screenScales = new ScreenScales( screenScaleFactors );
+		screenScales = new ScreenScales( screenScaleFactors, targetRenderNanos );
 		renderStorage = new RenderStorage();
 
-		this.targetRenderNanos = targetRenderNanos;
 		renderNanosPerPixelAndSource = new MovingAverage( 3 );
 		renderNanosPerPixelAndSource.init( 500 );
 
@@ -310,7 +300,7 @@ public class MultiResolutionRenderer
 			currentViewerState = viewerState.snapshot();
 			currentNumVisibleSources = currentViewerState.getVisibleAndPresentSources().size();
 			final double renderNanosPerPixel = renderNanosPerPixelAndSource.getAverage() * currentNumVisibleSources;
-			requestedScreenScaleIndex = screenScales.suggestScreenScale( renderNanosPerPixel, targetRenderNanos );
+			requestedScreenScaleIndex = screenScales.suggestScreenScale( renderNanosPerPixel );
 		}
 
 		final boolean createProjector = newFrame || ( requestedScreenScaleIndex != currentScreenScaleIndex );
@@ -520,7 +510,7 @@ public class MultiResolutionRenderer
 			{
 				cacheControl.prepareNextFrame();
 				final double renderNanosPerPixel = renderNanosPerPixelAndSource.getAverage() * currentNumVisibleSources;
-				requestedIntervalScaleIndex = screenScales.suggestIntervalScreenScale( renderNanosPerPixel, targetRenderNanos, currentScreenScaleIndex );
+				requestedIntervalScaleIndex = screenScales.suggestIntervalScreenScale( renderNanosPerPixel, currentScreenScaleIndex );
 			}
 
 			createProjector = newInterval || ( requestedIntervalScaleIndex != currentIntervalScaleIndex );
diff --git a/src/main/java/bdv/viewer/render/ScreenScales.java b/src/main/java/bdv/viewer/render/ScreenScales.java
index f743bcf2734aa771d8fffc8826c10523bae26590..7b46e57b3b28c41a0091a10575456034ddad530e 100644
--- a/src/main/java/bdv/viewer/render/ScreenScales.java
+++ b/src/main/java/bdv/viewer/render/ScreenScales.java
@@ -2,12 +2,21 @@ package bdv.viewer.render;
 
 import java.util.ArrayList;
 import java.util.List;
+
 import net.imglib2.Interval;
 import net.imglib2.realtransform.AffineTransform3D;
 import net.imglib2.util.Intervals;
 
 public class ScreenScales
 {
+	/**
+	 * Target rendering time in nanoseconds. The rendering time for the coarsest
+	 * rendered scale should be below this threshold. After the coarsest scale,
+	 * increasingly finer scales are rendered, but these render passes may be
+	 * canceled (while the coarsest may not).
+	 */
+	private final double targetRenderNanos;
+
 	private final List< ScreenScale > screenScales;
 
 	private int screenW = 0;
@@ -16,16 +25,19 @@ public class ScreenScales
 
 	/**
 	 * @param screenScaleFactors
-	 * 		Scale factors from the viewer canvas to screen images of
-	 * 		different resolutions. A scale factor of 1 means 1 pixel in
-	 * 		the screen image is displayed as 1 pixel on the canvas, a
-	 * 		scale factor of 0.5 means 1 pixel in the screen image is
-	 * 		displayed as 2 pixel on the canvas, etc.
+	 *     Scale factors from the viewer canvas to screen images of different
+	 *     resolutions. A scale factor of 1 means 1 pixel in the screen image is
+	 *     displayed as 1 pixel on the canvas, a scale factor of 0.5 means 1
+	 *     pixel in the screen image is displayed as 2 pixel on the canvas, etc.
+	 * @param targetRenderNanos
+	 *     Target rendering time in nanoseconds. The rendering time for the
+	 *     coarsest rendered scale should be below this threshold.
 	 */
-	public ScreenScales( final double[] screenScaleFactors )
+	public ScreenScales( final double[] screenScaleFactors, final double targetRenderNanos )
 	{
+		this.targetRenderNanos = targetRenderNanos;
 		screenScales = new ArrayList<>();
-		for ( double scale : screenScaleFactors )
+		for ( final double scale : screenScaleFactors )
 			screenScales.add( new ScreenScale( scale ) );
 	}
 
@@ -46,17 +58,23 @@ public class ScreenScales
 		return false;
 	}
 
+	/**
+	 * @return the screen scale at {@code index}
+	 */
 	public ScreenScale get( final int index )
 	{
 		return screenScales.get( index );
 	}
 
+	/**
+	 * @return number of screen scales.
+	 */
 	public int size()
 	{
 		return screenScales.size();
 	}
 
-	public int suggestScreenScale( final double renderNanosPerPixel, final double targetRenderNanos )
+	public int suggestScreenScale( final double renderNanosPerPixel )
 	{
 		for ( int i = 0; i < screenScales.size() - 1; i++ )
 		{
@@ -67,7 +85,7 @@ public class ScreenScales
 		return screenScales.size() - 1;
 	}
 
-	public int suggestIntervalScreenScale( final double renderNanosPerPixel, final double targetRenderNanos, final int minScreenScaleIndex )
+	public int suggestIntervalScreenScale( final double renderNanosPerPixel, final int minScreenScaleIndex )
 	{
 		for ( int i = minScreenScaleIndex; i < screenScales.size() - 1; i++ )
 		{