Lo primero que llama la atención es justo la primera línea del código:
No es que esté mal ni que sea la culpable, pero ¿puedes estar seguro al 100% que todo lo que se ejecuta después no interfiere con eso?
with es un peligro, y cuanto más código involucrado, más peligro es.
Para empezar, yo eliminaría ese
with. Es una fuente de problemas.
Y eso sin tan siquiera haber leído lo que hay después.