diff --git a/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py b/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py
index e59001399b7c52205769ec1ff4e73a2b77eb4b2c..7a5fbd794a532d690403317d5c2e491b34ac1587 100644
--- a/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py
+++ b/packages/flamenco/flamenco/job_compilers/blender_render_progressive.py
@@ -94,9 +94,9 @@ class BlenderRenderProgressive(BlenderRender):
         # This is quite a limitation, but makes our code to predict the
         # filename that Blender will use a lot simpler.
         render_output = job['settings']['render_output']
-        if u'######' not in render_output or u'#######' in render_output:
+        if not render_output.endswith(u'######') or render_output.endswith(u'#######'):
             raise exceptions.JobSettingError(
-                u'Setting "render_output" must contain exactly 6 "#" marks.')
+                u'Setting "render_output" must end in exactly 6 "#" marks.')
 
     def _make_progressive_render_tasks(self,
                                        job, name_fmt, parents,
@@ -219,9 +219,9 @@ class BlenderRenderProgressive(BlenderRender):
             for framenr in chunk_frames:
                 task_cmds.append(
                     commands.MergeProgressiveRenders(
-                        input1=unicode(input1).replace(u'######', u'%06i') % framenr,
-                        input2=unicode(input2).replace(u'######', u'%06i') % framenr,
-                        output=unicode(output).replace(u'######', u'%06i') % framenr,
+                        input1=unicode(input1).replace(u'######', u'%06i.exr') % framenr,
+                        input2=unicode(input2).replace(u'######', u'%06i.exr') % framenr,
+                        output=unicode(output).replace(u'######', u'%06i.exr') % framenr,
                         weight1=weight1,
                         weight2=weight2,
                     ))
diff --git a/packages/flamenco/flamenco/job_compilers/commands.py b/packages/flamenco/flamenco/job_compilers/commands.py
index 09dc89fa12e352717775649f80dbf09c18fe3cf9..bda838ba21f73f45085013f2a090a5a06c24fcfb 100644
--- a/packages/flamenco/flamenco/job_compilers/commands.py
+++ b/packages/flamenco/flamenco/job_compilers/commands.py
@@ -87,3 +87,8 @@ class MergeProgressiveRenders(AbstractCommand):
 
     weight1 = attr.ib(validator=attr.validators.instance_of(int))
     weight2 = attr.ib(validator=attr.validators.instance_of(int))
+
+    # Blender command to run in order to merge the two EXR files.
+    # This is usually determined by the Flamenco Manager configuration.
+    blender_cmd = attr.ib(validator=attr.validators.instance_of(unicode),
+                          default=u'{blender}')
diff --git a/packages/flamenco/tests/test_job_compilers.py b/packages/flamenco/tests/test_job_compilers.py
index e5adea68e9c4ebf2e013dc780fca1a93370a8c2c..ce41b328f8b02f5c0aa585d148e9791e272b8a3c 100644
--- a/packages/flamenco/tests/test_job_compilers.py
+++ b/packages/flamenco/tests/test_job_compilers.py
@@ -219,16 +219,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase):
                 job_doc,
                 [
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000001',
-                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000001',
-                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000001',
+                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000001.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000001.exr',
+                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000001.exr',
                         weight1=10,
                         weight2=10,
                     ),
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000002',
-                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000002',
-                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000002',
+                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000002.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000002.exr',
+                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000002.exr',
                         weight1=10,
                         weight2=10,
                     ),
@@ -240,16 +240,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase):
                 job_doc,
                 [
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000003',
-                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000003',
-                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000003',
+                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000003.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000003.exr',
+                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000003.exr',
                         weight1=10,
                         weight2=10,
                     ),
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000004',
-                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000004',
-                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000004',
+                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000004.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000004.exr',
+                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000004.exr',
                         weight1=10,
                         weight2=10,
                     ),
@@ -261,16 +261,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase):
                 job_doc,
                 [
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000005',
-                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000005',
-                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000005',
+                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000005.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000005.exr',
+                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000005.exr',
                         weight1=10,
                         weight2=10,
                     ),
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000006',
-                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000006',
-                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000006',
+                        input1=u'/render/out/_intermediate/render-smpl-1-10-frm-000006.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-11-20-frm-000006.exr',
+                        output=u'/render/out/_intermediate/merge-smpl-20-frm-000006.exr',
                         weight1=10,
                         weight2=10,
                     ),
@@ -331,16 +331,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase):
                 job_doc,
                 [
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000001',
-                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000001',
-                        output=u'/render/out/frames-000001',
+                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000001.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000001.exr',
+                        output=u'/render/out/frames-000001.exr',
                         weight1=20,
                         weight2=10,
                     ),
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000002',
-                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000002',
-                        output=u'/render/out/frames-000002',
+                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000002.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000002.exr',
+                        output=u'/render/out/frames-000002.exr',
                         weight1=20,
                         weight2=10,
                     ),
@@ -352,16 +352,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase):
                 job_doc,
                 [
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000003',
-                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000003',
-                        output=u'/render/out/frames-000003',
+                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000003.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000003.exr',
+                        output=u'/render/out/frames-000003.exr',
                         weight1=20,
                         weight2=10,
                     ),
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000004',
-                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000004',
-                        output=u'/render/out/frames-000004',
+                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000004.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000004.exr',
+                        output=u'/render/out/frames-000004.exr',
                         weight1=20,
                         weight2=10,
                     ),
@@ -373,16 +373,16 @@ class BlenderRenderProgressiveTest(unittest.TestCase):
                 job_doc,
                 [
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000005',
-                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000005',
-                        output=u'/render/out/frames-000005',
+                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000005.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000005.exr',
+                        output=u'/render/out/frames-000005.exr',
                         weight1=20,
                         weight2=10,
                     ),
                     commands.MergeProgressiveRenders(
-                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000006',
-                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000006',
-                        output=u'/render/out/frames-000006',
+                        input1=u'/render/out/_intermediate/merge-smpl-20-frm-000006.exr',
+                        input2=u'/render/out/_intermediate/render-smpl-21-30-frm-000006.exr',
+                        output=u'/render/out/frames-000006.exr',
                         weight1=20,
                         weight2=10,
                     ),