improved canvas effect