diff --git a/src/main/java/bdv/viewer/render/RenderResult.java b/src/main/java/bdv/viewer/render/RenderResult.java
index fe44b2ce0e28e22e96d2dcb4750454d47fbd8cdc..16caf1b1fc13879f5b79c26ff19ff5141cbbdc9b 100644
--- a/src/main/java/bdv/viewer/render/RenderResult.java
+++ b/src/main/java/bdv/viewer/render/RenderResult.java
@@ -6,49 +6,65 @@ import net.imglib2.realtransform.AffineTransform3D;
 import net.imglib2.type.numeric.ARGBType;
 
 /**
- * TODO javadoc
+ * Provides the {@link MultiResolutionRenderer renderer} with a target image
+ * ({@code RandomAccessibleInterval<ARGBType>}) to render to. Provides the
+ * {@link RenderTarget} with the rendered image and transform etc necessary to
+ * display it.
  */
 public interface RenderResult
 {
 	/**
-	 * TODO javadoc
+	 * Allocate storage such that {@link #getScreenImage()} holds an image of
+	 * {@code width * height}.
+	 * <p>
+	 * (Called by the {@link MultiResolutionRenderer renderer}.)
 	 */
 	void init( int width, int height );
 
 	/**
-	 * TODO javadoc
 	 * Get the image to render to.
+	 * <p>
+	 * (Called by the {@link MultiResolutionRenderer renderer}.)
 	 *
-	 * @return
+	 * @return the image to render to
 	 */
 	// TODO: rename getTargetImage() ???
 	RandomAccessibleInterval< ARGBType > getScreenImage();
 
 	/**
-	 * TODO javadoc
-	 * Get the viewer transform used to render image.
-	 * This is with respect to the screen resolution (doesn't include scaling).
+	 * Get the viewer transform used to render image. This is with respect to
+	 * the screen resolution (doesn't include scaling).
+	 * <p>
+	 * (Called by the {@link MultiResolutionRenderer renderer} to set the
+	 * transform.)
 	 */
 	AffineTransform3D getViewerTransform();
 
 	/**
-	 * TODO javadoc
+	 * Get the scale factor from target coordinates to screen resolution.
 	 */
 	double getScaleFactor();
 
 	/**
-	 * TODO javadoc
+	 * Set the scale factor from target coordinates to screen resolution.
 	 */
 	void setScaleFactor( double scaleFactor );
 
 	/**
-	 * Fill in {@code interval} with data from {@code patch},
-	 * scaled by the relative scale between this {@code RenderResult} and {@code patch},
-	 * and shifted such that {@code (0,0)} of the {@code patch} is placed at {@code (ox,oy)} of this {@code RenderResult}
+	 * Fill in {@code interval} with data from {@code patch}, scaled by the
+	 * relative scale between this {@code RenderResult} and {@code patch}, and
+	 * shifted such that {@code (0,0)} of the {@code patch} is placed at
+	 * {@code (ox,oy)} of this {@code RenderResult}
 	 * <p>
-	 * Note that only data in {@code interval} will be modified, although the scaled and shifted {@code patch} might fall partially outside.
+	 * Note that only data in {@code interval} will be modified, although the
+	 * scaled and shifted {@code patch} might fall partially outside.
 	 */
 	void patch( final RenderResult patch, final Interval interval, final double ox, final double oy );
 
+	/**
+	 * Notify that the {@link #getScreenImage() target image} data was changed.
+	 * <p>
+	 * (Called by the {@link MultiResolutionRenderer renderer}.)
+	 */
 	void setUpdated();
 }