diff --git a/examples/demo.py b/examples/demo.py
index 02fae475039578e09fbd885d0bde0275b8aa6ac9..cc40c24906cf1c2c4766b583b48a740a965332ac 100644
--- a/examples/demo.py
+++ b/examples/demo.py
@@ -126,6 +126,10 @@ class Demo:
         self.create_renderer()
         self.action_size = 4
         self.max_frame_rate = 60
+        self.record_frames = None
+
+    def set_record_frames(self,record_frames):
+        self.record_frames = record_frames
 
     def create_renderer(self):
         self.renderer = RenderTool(self.env, gl="PILSVG")
@@ -151,7 +155,7 @@ class Demo:
             for iAgent in range(self.env.get_num_agents()):
                 action = 2
 
-                if True:
+                if False:
                     if not ((step) % 2 == 0):
                         if iAgent == 3:
                             action = 0
@@ -179,6 +183,10 @@ class Demo:
                 break
 
 
+
+            im = self.renderer.getImage()
+            self.renderer.gl.saveImage(self.record_frames.format(step))
+
             # ensure that the rendering is not faster then the maximal allowed frame rate
             end_frame_time_stamp = datetime.now()
             frame_exe_time = end_frame_time_stamp - begin_frame_time_stamp
@@ -212,18 +220,21 @@ if False:
     demo_002.run_demo()
     demo_002 = None
 
-demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_000.pkl'))
-demo_flatland_000.renderer.resize()
-demo_flatland_000.run_demo(60)
-demo_flatland_000 = None
+    demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_000.pkl'))
+    demo_flatland_000.renderer.resize()
+    demo_flatland_000.run_demo(60)
+    demo_flatland_000 = None
+
+
+    demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_network_003.pkl'))
+    demo_flatland_000.renderer.resize()
+    demo_flatland_000.set_max_framerate(5)
+    demo_flatland_000.run_demo(30)
+    demo_flatland_000 = None
+
 
 demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl'))
 demo_flatland_000.renderer.resize()
+demo_flatland_000.set_record_frames('./rendering/frame_{:04d}.bmp')
 demo_flatland_000.run_demo(60)
 demo_flatland_000 = None
-
-demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_network_003.pkl'))
-demo_flatland_000.renderer.resize()
-demo_flatland_000.set_max_framerate(5)
-demo_flatland_000.run_demo(30)
-demo_flatland_000 = None
diff --git a/flatland/utils/graphics_layer.py b/flatland/utils/graphics_layer.py
index 2598a8893cf47ac9be526a7c8809f55ca2bb8ddf..7fd49af8aaa4d8f95151ddc5ef4bd8c6704444da 100644
--- a/flatland/utils/graphics_layer.py
+++ b/flatland/utils/graphics_layer.py
@@ -43,6 +43,9 @@ class GraphicsLayer(object):
     def getImage(self):
         pass
 
+    def saveImage(self,filename):
+        pass
+
     def adaptColor(self, color, lighten=False):
         if type(color) is str:
             if color == "red" or color == "r":
diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py
index 40e0a9270ede53de13174203a40972fdf540b61e..b64d2e252f93e4ee4124bc9312d93898a50ee33c 100644
--- a/flatland/utils/graphics_pil.py
+++ b/flatland/utils/graphics_pil.py
@@ -160,6 +160,13 @@ class PILGL(GraphicsLayer):
         img = self.alpha_composite_layers()
         return array(img)
 
+
+    def saveImage(self,filename):
+        print(filename)
+        img = self.alpha_composite_layers()
+        img.save(filename)
+
+
     def create_image(self, opacity=255):
         img = Image.new("RGBA", (self.widthPx, self.heightPx), (255, 255, 255, opacity))
         return img
diff --git a/flatland/utils/rendertools.py b/flatland/utils/rendertools.py
index aa8731b1135326586117be2bd8e8bf6da97ea146..b8dd5cdead98162de3c6618604fb1260d5caf89b 100644
--- a/flatland/utils/rendertools.py
+++ b/flatland/utils/rendertools.py
@@ -703,6 +703,7 @@ class RenderTool(object):
     def getImage(self):
         return self.gl.getImage()
 
+
     def plotTreeObs(self, gObs):
         nBranchFactor = 4