diff --git a/scripts/run.jl b/scripts/run.jl
index 685725cd44157b31f5f7202bfdfb40885e6c6059..8c432e92c40a6ccfa776d829b113c7b039a0b3ee 100644
--- a/scripts/run.jl
+++ b/scripts/run.jl
@@ -21,6 +21,8 @@ end
 function paper2(ctx)
     # comparison: image mesh interpolation methods
     ctx(experiment_image_mesh_interpolation, "image-mesh-interpolation")
-    # comparison: vanilla / warping / adaptive
+    # optflow comparison: vanilla / warping / adaptive
     ctx(experiment_optflow_middlebury_warping_comparison_adaptive, "fem/opticalflow/middlebury_warping_comparison_adaptive")
+    # adaptive inpainting
+    ctx(experiment_inpaint_adaptive, "fem/inpaint_adaptive")
 end
diff --git a/scripts/run_experiments.jl b/scripts/run_experiments.jl
index bfd755b4d2daf0a9a6ec4b66b9cc4393892331b1..2bef78c3758240d936fc120cf355c7d6dde6dd62 100644
--- a/scripts/run_experiments.jl
+++ b/scripts/run_experiments.jl
@@ -1448,19 +1448,29 @@ function inpaint(ctx)
     return st
 end
 
-function experiment_inpaint(ctx)
+function experiment_inpaint_adaptive(ctx)
     g_arr = loadimg(joinpath(ctx.indir, "input.png"))
     mask_arr = loadimg(joinpath(ctx.indir, "mask.png"))
     mesh = init_grid(g_arr;)
 
-    inpaint(Util.Context(ctx; name = "test",
-        S = Operators.SIdentity,
+    params = (
+        name = "test",
         n_refine = 5,
         g_arr, mask_arr, mesh,
-        alpha1 = 0., alpha2 = 50., lambda = 1., beta = 1e-5,
+        #alpha1 = 0.2, alpha2 = 8., lambda = 1.,
+        alpha1 = 0., alpha2 = 50., lambda = 1.,
+        beta = 1e-5, S = Operators.SIdentity(),
         gamma1 = 1e-4, gamma2 = 1e-4,
-        eps_newton = 1e-4,
-    ))
+        eps_newton = 1e-4)
+
+    savedata(joinpath(ctx.outdir, "data.tex");
+        params.eps_newton, params.n_refine,
+        params.alpha1, params.alpha2, params.lambda,
+        params.gamma1, params.gamma2,
+        params.beta, params.S,
+        width=size(g_arr, 1), height=size(g_arr, 2))
+
+    ctx(inpaint; params...)
 end
 
 function experiment_inpaint_denoise(ctx)