diff --git a/src/function.jl b/src/function.jl
index c871e338d4e318200b3e9cc7045f0a84d145ab49..2e001fa600d31e495ff1f9ceb8094a4c27b44fe0 100644
--- a/src/function.jl
+++ b/src/function.jl
@@ -255,6 +255,7 @@ function evaluate(df::Derivative, x)
     return SArray{Tuple{df.f.space.size..., length(x)}}(jac)
 end
 
+
 # TODO: inherit from some abstract function type
 struct ImageFunction{Img}
     mesh::Mesh
@@ -266,8 +267,9 @@ ImageFunction(mesh, img) =
     ImageFunction(mesh, img, Ref(1))
 
 bind!(f::ImageFunction, cell) = f.cell[] = cell
+# TODO: precompute the offset from minimum mesh vertex
 evaluate(f::ImageFunction, xloc) =
-    interpolate_bilinear(f.img, elmap(f.mesh, f.cell[])(xloc))
+    interpolate_bilinear(f.img, elmap(f.mesh, f.cell[])(xloc) .+ (0.5, 0.5))
 
 
 struct FacetDivergence{F}