diff --git a/mesh_looptools.py b/mesh_looptools.py
index 17aa81bb5a0f70fab71b3f29b597494018caef53..ef472964b358fe04bd6affc12b49492158e72b00 100644
--- a/mesh_looptools.py
+++ b/mesh_looptools.py
@@ -61,9 +61,9 @@ looptools_cache = {}
 
 
 def get_grease_pencil(object, context):
-    gp = object.grease_pencil
+    gp = bpy.data.grease_pencils
     if not gp:
-        gp = context.scene.grease_pencil
+        gp = context.view_layers.grease_pencils
     return gp
 
 
@@ -2792,7 +2792,9 @@ def gstretch_erase_stroke(stroke, context):
     if erase_stroke:
         erase_stroke[0]['is_start'] = True
     #bpy.ops.gpencil.draw(mode='ERASER', stroke=erase_stroke)
-    bpy.ops.gpencil.layer_remove()
+    bpy.ops.gpencil.data_unlink()
+
+
 
 # get point on stroke, given by relative distance (0.0 - 1.0)
 def gstretch_eval_stroke(stroke, distance, stroke_lengths_cache=False):
@@ -2841,13 +2843,13 @@ def gstretch_get_strokes(object, context):
     gp = get_grease_pencil(object, context)
     if not gp:
         return(None)
-    layer = gp.layers.active
+    layer = context.active_gpencil_layer
     if not layer:
         return(None)
-    frame = layer.active_frame
+    frame = context.active_gpencil_frame
     if not frame:
         return(None)
-    strokes = frame.strokes
+    strokes = context.editable_gpencil_strokes
     if len(strokes) < 1:
         return(None)