Well, I spend some time trying to blindly figure out why athens may crash time to time when drawing surfaces, basically testing the apprachs Ronie proposes.
First approach consists on copying data to not rely on a surface at all. Problem with this is that it involves a whole full copy, that causes a lot of GC that pauses a lot the image... so smoothness is gone.
Second approach seems a lot more doable, but I still don't know if it works:
this will prevent surfaces to be garbage collected before it's time and seems to be working fine (at least in my machine).