diff --git a/src/PythonicAPI.md b/src/PythonicAPI.md
index 520f36e2248e8695f2b823a50ea771118db64fd4..022216afcfd032bfa2b9a6308c128160b1d091cc 100644
--- a/src/PythonicAPI.md
+++ b/src/PythonicAPI.md
@@ -230,6 +230,10 @@ See [this tutorial](http://www.vtk.org/Wiki/VTK/Tutorials/3DDataTypes) for a bri
 
 ## Working with Images
 
+| Example Name | Description | Image |
+| -------------- | ------------- | ------- |
+[BackgroundImage](/PythonicAPI/Images/BackgroundImage) | Display an image as the "background" of a scene, and render a superquadric in front of it.
+
 ## Image Processing
 
 | Example Name | Description | Image |
diff --git a/src/PythonicAPI/Images/BackgroundImage.md b/src/PythonicAPI/Images/BackgroundImage.md
new file mode 100644
index 0000000000000000000000000000000000000000..e939d00b8e73c38cafeaa2d25696f34d46b801a7
--- /dev/null
+++ b/src/PythonicAPI/Images/BackgroundImage.md
@@ -0,0 +1,5 @@
+### Description
+
+This example displays an image as the "background" of a scene, and renders a superquadric in front of it.
+
+The example accepts a jpeg file on the command line to use as a background image. If there is no file, it generates a simple background.
diff --git a/src/PythonicAPI/Images/BackgroundImage.py b/src/PythonicAPI/Images/BackgroundImage.py
new file mode 100755
index 0000000000000000000000000000000000000000..01877cfa82f8b48be9c0541f4bf551b9e88d4d28
--- /dev/null
+++ b/src/PythonicAPI/Images/BackgroundImage.py
@@ -0,0 +1,137 @@
+#!/usr/bin/env python3
+
+from dataclasses import dataclass
+
+# noinspection PyUnresolvedReferences
+import vtkmodules.vtkInteractionStyle
+# noinspection PyUnresolvedReferences
+import vtkmodules.vtkRenderingOpenGL2
+from vtkmodules.vtkCommonColor import vtkNamedColors
+from vtkmodules.vtkFiltersSources import vtkSuperquadricSource
+from vtkmodules.vtkIOImage import vtkJPEGReader
+from vtkmodules.vtkImagingSources import vtkImageCanvasSource2D
+from vtkmodules.vtkRenderingCore import (
+    vtkActor,
+    vtkImageSlice,
+    vtkImageSliceMapper,
+    vtkPolyDataMapper,
+    vtkRenderWindow,
+    vtkRenderWindowInteractor,
+    vtkRenderer
+)
+
+
+def get_program_parameters():
+    import argparse
+    description = 'Add a background image to a render window.'
+    epilogue = '''
+        Add a background image to a render window.
+   '''
+    parser = argparse.ArgumentParser(description=description, epilog=epilogue)
+    parser.add_argument('filename', default=None, type=str, nargs='?',
+                        help='An optional filename e.g. Gourds2.jpg.')
+    args = parser.parse_args()
+    return args.filename
+
+
+def main():
+    colors = vtkNamedColors()
+
+    #  Verify input arguments
+    fn = get_program_parameters()
+    if fn:
+        # Read the image.
+        jpeg_reader = vtkJPEGReader(file_name=fn)
+        if not jpeg_reader.CanReadFile(fn):
+            print('Error reading file:', fn)
+            return
+        image_data = jpeg_reader.update().output
+    else:
+        canvas_source = vtkImageCanvasSource2D(extent=(0, 100, 0, 100, 0, 0), number_of_scalar_components=3,
+                                               scalar_type=ImageCanvasSource2DScalarType.VTK_UNSIGNED_CHAR)
+        # Do the drawing.
+        canvas_source.SetDrawColor(colors.GetColor4ub('warm_grey'))
+        canvas_source.FillBox(0, 100, 0, 100)
+        canvas_source.SetDrawColor(colors.GetColor4ub('DarkCyan'))
+        canvas_source.FillTriangle(10, 10, 25, 10, 25, 25)
+        canvas_source.SetDrawColor(colors.GetColor4ub('LightCoral'))
+        canvas_source.FillTube(75, 75, 0, 75, 5.0)
+        image_data = canvas_source.update().output
+
+    # Create an image actor to display the image.
+    image_mapper = vtkImageSliceMapper()
+    image_slice = vtkImageSlice(mapper=image_mapper)
+    image_data >> image_mapper
+
+    # Create a superquadric
+    superquadric_source = vtkSuperquadricSource(phi_roundness=1.1, theta_roundness=0.2)
+
+    # Create a mapper and actor
+    superquadric_mapper = vtkPolyDataMapper()
+    superquadric_actor = vtkActor(mapper=superquadric_mapper)
+    superquadric_actor.property.color = colors.GetColor3d('NavajoWhite')
+
+    superquadric_source >> superquadric_mapper
+
+    # Set up the render window and renderers such that there is
+    # a background layer and a foreground layer
+    # Create a renderer to display the image in the background.
+    background_renderer = vtkRenderer(layer=0, interactive=False)
+    #  Render the scene in the next layer.
+    scene_renderer = vtkRenderer(layer=1)
+
+    # Add actors to the renderers
+    scene_renderer.AddActor(superquadric_actor)
+    background_renderer.AddActor(image_slice)
+
+    render_window = vtkRenderWindow(number_of_layers=2)
+    render_window.AddRenderer(background_renderer)
+    render_window.AddRenderer(scene_renderer)
+    render_window.SetWindowName('BackgroundImage')
+
+    render_window_interactor = vtkRenderWindowInteractor()
+    render_window_interactor.SetRenderWindow(render_window)
+
+    # Render once to figure out where the background camera will be.
+    render_window.Render()
+
+    # Set up the background camera to fill the renderer with the image.
+    origin = image_data.origin
+    spacing = image_data.spacing
+    extent = image_data.extent
+
+    camera = background_renderer.GetActiveCamera()
+    camera.ParallelProjectionOn()
+
+    xc = origin[0] + 0.5 * (extent[0] + extent[1]) * spacing[0]
+    yc = origin[1] + 0.5 * (extent[2] + extent[3]) * spacing[1]
+    # xd = (extent[1] - extent[0] + 1) * spacing[0]
+    yd = (extent[3] - extent[2] + 1) * spacing[1]
+    d = camera.GetDistance()
+    camera.SetParallelScale(0.5 * yd)
+    camera.SetFocalPoint(xc, yc, 0.0)
+    camera.SetPosition(xc, yc, d)
+
+    # Render again to set the correct view.
+    render_window.Render()
+
+    # Interact with the window.
+    render_window_interactor.Start()
+
+
+@dataclass(frozen=True)
+class ImageCanvasSource2DScalarType:
+    VTK_CHAR: int = 2
+    VTK_UNSIGNED_CHAR: int = 3
+    VTK_SHORT: int = 4
+    VTK_UNSIGNED_SHORT: int = 5
+    VTK_INT: int = 6
+    VTK_UNSIGNED_INT: int = 7
+    VTK_LONG: int = 8
+    VTK_UNSIGNED_LONG: int = 9
+    VTK_FLOAT: int = 10
+    VTK_DOUBLE: int = 11
+
+
+if __name__ == '__main__':
+    main()
diff --git a/src/Testing/Baseline/PythonicAPI/Images/TestBackgroundImage.png b/src/Testing/Baseline/PythonicAPI/Images/TestBackgroundImage.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5520ba84d0081ba4210bb286de21f211c70ec85
--- /dev/null
+++ b/src/Testing/Baseline/PythonicAPI/Images/TestBackgroundImage.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d42c28679c336b924074b39b069d4abc8940fde96847e98eec8e7a6b0cedeeb9
+size 18587