improved canvas integration