diff --git a/render_renderfarmfi.py b/render_renderfarmfi.py
index 6f97780fcc0787cabfbb802e2c635712dccb91a5..55cd65748d1ab16a88386a65a506040bb837db2e 100644
--- a/render_renderfarmfi.py
+++ b/render_renderfarmfi.py
@@ -21,7 +21,7 @@ DEV = False
 bl_info = {
     "name": "Renderfarm.fi",
     "author": "Nathan Letwory <nathan@letworyinteractive.com>, Jesse Kaukonen <jesse.kaukonen@gmail.com>",
-    "version": (17,),
+    "version": (18,),
     "blender": (2, 6, 2),
     "location": "Render > Engine > Renderfarm.fi",
     "description": "Send .blend as session to http://www.renderfarm.fi to render",
@@ -241,13 +241,13 @@ def changeSettings():
     sce = bpy.context.scene
     rd = sce.render
     ore = sce.ore_render
-    
+
     # Necessary settings for BURP
-    ore.resox = rd.resolution_x
-    ore.resoy = rd.resolution_y
-    ore.start = sce.frame_start
-    ore.end = sce.frame_end
-    ore.fps = rd.fps
+    rd.resolution_x = ore.resox
+    rd.resolution_y = ore.resoy
+    sce.frame_start = ore.start
+    sce.frame_end = ore.end
+    rd.fps = ore.fps
     
     bpy.file_format_warning = False
     bpy.simulationWarning = False
@@ -272,7 +272,13 @@ def changeSettings():
         ore.file_format = 'PNG_FORMAT'
         
     if (ore.engine == 'cycles'):
-        ore.samples = bpy.context.scene.cycles.samples
+        bpy.context.scene.cycles.samples = ore.samples
+        
+    if (ore.subsamples <= 0):
+        ore.subsamples = 1
+    
+    if (ore.samples / ore.subsamples < 100.0):
+        ore.subsamples = float(ore.samples) / 100.0
         
     # Multipart support doesn' work if SSS is used
     if ((rd.use_sss == True and hasSSSMaterial()) and ore.parts > 1):
@@ -295,13 +301,7 @@ def prepareScene():
     ore = sce.ore_render
     
     changeSettings()
-    
-    ore.resox = rd.resolution_x
-    ore.resoy = rd.resolution_y
-    ore.fps = rd.fps
-    ore.start = sce.frame_start
-    ore.end = sce.frame_end
-    
+
     print("Packing external textures...")
     try:
         bpy.ops.file.pack_all()
@@ -349,11 +349,19 @@ class OpSwitchRenderfarm(bpy.types.Operator):
     bl_idname = "ore.switch_to_renderfarm_render"
     
     def execute(self, context):
-        changeSettings()
-        if (bpy.context.scene.render.engine == 'CYCLES'):
-            bpy.context.scene.ore_render.engine = 'cycles'
+        ore = bpy.context.scene.ore_render
+        rd = bpy.context.scene.render
+        
+        ore.resox = rd.resolution_x
+        ore.resoy = rd.resolution_y
+        ore.fps = rd.fps
+        ore.start = bpy.context.scene.frame_start
+        ore.end = bpy.context.scene.frame_end
+        if (rd.engine == 'CYCLES'):
+            ore.samples = bpy.context.scene.cycles.samples
+            ore.engine = 'cycles'
         else:
-            bpy.context.scene.ore_render.engine = 'blender'
+            ore.engine = 'blender'
         bpy.context.scene.render.engine = 'RENDERFARMFI_RENDER'
         return {'FINISHED'}
 
@@ -370,7 +378,8 @@ class OpSwitchBlenderRender(bpy.types.Operator):
         bpy.context.scene.frame_start = ore.start
         bpy.context.scene.frame_end = ore.end
         if (bpy.context.scene.ore_render.engine == 'cycles'):
-            bpy.context.scene.render.engine = 'CYCLES'
+            rd.engine = 'CYCLES'
+            bpy.context.scene.cycles.samples = ore.samples
         else:
             bpy.context.scene.render.engine = 'BLENDER_RENDER'
         return {'FINISHED'}