haciendo deshacer en python

primero de todo .. perdon si mi ingles era malo es mi tercer idioma
Estoy trabajando en un software de pintura que dibuja sobre imágenes y las guarda de nuevo (para comentar, proponer)
Yo uso la pila y wxpython. pero sigo teniendo problemas con algunas características ..
¿Cuál es la forma ideal de hacer la opción de deshacer?
otra pregunta ... cuando el usuario escala la imagen (al ampliar el marco del dibujo) las líneas no se escalan. ¿Cómo puedo hacer que eso suceda.

Me deshice de todos esos problemas guardando imágenes temporales en el disco duro cuando el usuario termina una línea y asigna esa nueva imagen (la anterior con una línea) al marco. la voluntad de deshacer y rehacer se realiza cambiando entre esas imágenes ... de modo que cuando la imagen del usuario se escala, la línea también se escalará. pero eso es malo ya que ocupa mucho espacio en el disco duro (cuando dibujas 1000 líneas) y es lento porque asigna una nueva imagen cada vez que un usuario dibuja una línea

espero que mi idea sea clara

Alguien tiene una solución mejor ?

Respuestas a la pregunta(2)

Su respuesta a la pregunta