diff --git a/io_shape_mdd/import_mdd.py b/io_shape_mdd/import_mdd.py
index e671e2858e661bcaa5e9380c5fe586a25130f6be..8caedccde618c1d99de4ee3b2a80bc4dd211ad5b 100644
--- a/io_shape_mdd/import_mdd.py
+++ b/io_shape_mdd/import_mdd.py
@@ -34,17 +34,27 @@
 import bpy
 from struct import unpack
 
-def obj_update_frame(file, scene, obj, fr, step):
+def set_linear_interpolation(obj, shapekey):
+    anim_data = obj.data.shape_keys.animation_data
+    data_path = "key_blocks[\"" + shapekey.name + "\"].value"
+
+    for fcu in anim_data.action.fcurves:
+        if fcu.data_path == data_path:
+            for keyframe in fcu.keyframe_points:
+                keyframe.interpolation = 'LINEAR'
+
+
+def obj_update_frame(file, scene, obj, start, fr, step):
 
     # Insert new shape key
     new_shapekey = obj.shape_key_add()
     new_shapekey.name = ("frame_%.4d" % fr)
+    new_shapekey_index = len(obj.data.shape_keys.key_blocks) - 1
 
-    obj.active_shape_key_index = len(obj.data.shape_keys.key_blocks) - 1
-    index = len(obj.data.shape_keys.key_blocks) - 1
+    obj.active_shape_key_index = new_shapekey_index
     obj.show_only_shape_key = True
 
-    verts = obj.data.shape_keys.key_blocks[len(obj.data.shape_keys.key_blocks) - 1].data
+    verts = new_shapekey.data
 
     for v in verts:  # 12 is the size of 3 floats
         v.co[:] = unpack('>3f', file.read(12))
@@ -53,19 +63,19 @@ def obj_update_frame(file, scene, obj, fr, step):
     obj.show_only_shape_key = False
 
     # insert keyframes
-    shape_keys = obj.data.shape_keys
+    new_shapekey = obj.data.shape_keys.key_blocks[new_shapekey_index]
+    frame = start + fr*step
 
-    scene.frame_current -= step
-    obj.data.shape_keys.key_blocks[index].value = 0.0
-    shape_keys.key_blocks[len(obj.data.shape_keys.key_blocks) - 1].keyframe_insert("value")
+    new_shapekey.value = 0.0
+    new_shapekey.keyframe_insert("value", frame=frame - step)
 
-    scene.frame_current += step
-    obj.data.shape_keys.key_blocks[index].value = 1.0
-    shape_keys.key_blocks[len(obj.data.shape_keys.key_blocks) - 1].keyframe_insert("value")
+    new_shapekey.value = 1.0
+    new_shapekey.keyframe_insert("value", frame=frame)
 
-    scene.frame_current += step
-    obj.data.shape_keys.key_blocks[index].value = 0.0
-    shape_keys.key_blocks[len(obj.data.shape_keys.key_blocks) - 1].keyframe_insert("value")
+    new_shapekey.value = 0.0
+    new_shapekey.keyframe_insert("value", frame=frame + step)
+
+    set_linear_interpolation(obj, new_shapekey)
 
     obj.data.update()
 
@@ -93,9 +103,7 @@ def load(operator, context, filepath, frame_start=0, frame_step=1):
         basis.name = "Basis"
         obj.data.update()
 
-    scene.frame_current = frame_start
-
     for i in range(frames):
-        obj_update_frame(file, scene, obj, i, frame_step)
+        obj_update_frame(file, scene, obj, frame_start, i, frame_step)
 
     return {'FINISHED'}