diff --git a/examples/play_model.py b/examples/play_model.py
index c7c8074993817da331e16e5b2fbebfc4df537cc8..e8939543ba638acd7396594c84c148c8d9ee7b9f 100644
--- a/examples/play_model.py
+++ b/examples/play_model.py
@@ -155,7 +155,7 @@ def main(render=True, delay=0.0):
         env_done = 0
 
         # Run episode
-        for step in range(50):
+        for step in range(100):
             # if trials > 114:
             # env_renderer.renderEnv(show=True)
             # print(step)
diff --git a/flatland/utils/editor.py b/flatland/utils/editor.py
index a48c6b94b40c710cbd621a81144fd460d0687f9a..5e40701ad69c78247bc90b13c6e937b69aa72cf9 100644
--- a/flatland/utils/editor.py
+++ b/flatland/utils/editor.py
@@ -58,7 +58,7 @@ class View(object):
     def init_canvas(self):
         # update the rendertool with the env
         self.new_env()
-        plt.figure(figsize=(10, 10))
+        #plt.figure(figsize=(10, 10))
         self.oRT.renderEnv(spacing=False, arrows=False, sRailColor="gray", show=False)
         img = self.oRT.getImage()
         plt.clf()
@@ -363,7 +363,7 @@ class EditorModel(object):
         set a new env for the editor, used by load and regenerate.
         """
         self.env = env
-        self.yxBase = array([6, 21])  # pixel offset
+        # self.yxBase = array([6, 21])  # pixel offset
         # self.nPixCell = 700 / self.env.rail.width  # 35
         # self.oRT = rt.RenderTool(env)
 
@@ -680,3 +680,6 @@ class EditorModel(object):
                    binTrans,
                    sbinTrans,
                    [sbinTrans[i:(i + 4)] for i in range(0, len(sbinTrans), 4)])
+
+
+    
\ No newline at end of file
diff --git a/flatland/utils/rendertools.py b/flatland/utils/rendertools.py
index 86917f3ef2eb436dfbfc95b4c78e3720fdd7c623..fb2751165687e3a2f4e1e5e3dd5768021a110735 100644
--- a/flatland/utils/rendertools.py
+++ b/flatland/utils/rendertools.py
@@ -19,7 +19,7 @@ class MPLGL(GraphicsLayer):
         self.height = height
         self.yxBase = array([6, 21])  # pixel offset
         self.nPixCell = 700 / width
-        pass
+        self.img = None
 
     def plot(self, *args, **kwargs):
         plt.plot(*args, **kwargs)
@@ -67,23 +67,31 @@ class MPLGL(GraphicsLayer):
         return plt.get_cmap(*args, **kwargs)
 
     def beginFrame(self):
+        self.img = None
         plt.figure(figsize=(10, 10))
         pass
 
     def endFrame(self):
-        # plt.clf()
-        # plt.close()
-        pass
-
-    def getImage(self):
-        ax = plt.gca()
-        fig = ax.get_figure()
-        fig.tight_layout(pad=0)
-        fig.canvas.draw()
-        data = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)
-        data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))
-        return data
+        self.img = self.getImage(force=True)
+        plt.clf()
+        plt.close()
 
+    def getImage(self, force=False):
+        if self.img is None or force:
+            ax = plt.gca()
+            fig = ax.get_figure()
+            fig.tight_layout(pad=0)
+            fig.canvas.draw()
+            data = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)
+            data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))
+            self.img = data
+        return self.img
+
+    def adaptColor(self, color, lighten=False):
+        color = super(self.__class__, self).adaptColor(color, lighten)
+        # MPL has RGBA in [0,1]^4 not \mathbb{N} \cap [0,255]^4
+        color = tuple([iRGBA / 255 for iRGBA in color])
+        return color
 
 class RenderTool(object):
     Visit = recordtype("Visit", ["rc", "iDir", "iDepth", "prev"])
@@ -469,7 +477,7 @@ class RenderTool(object):
         # so for now I've changed it to 1 (from 10)
         cell_size = 1
         self.gl.beginFrame()
-        self.gl.clf()
+        # self.gl.clf()
         # if oFigure is None:
         #    oFigure = self.gl.figure()