Resetting a Material's Texture After GetPixels/SetPixels

I have a texture, renderer.material.mainTexture that I'm painting with GetPixels and SetPixels at runtime. So, I start playback and paint the texture. How do I set this texture back to its original, unpainted state when I stop playback in the editor and start playback again? Right now the painted pixels carry over from session to session. The only way I can reset the texture is to go into the project inspector, select the texture image, and select reset. Also, what is the intermediate state that the texture is stored in for this to happen? I'm used to authoring programs where you have original, saved state, and then the rendered state which only occurs at runtime.

Why this is happening is related to the difference between value types and reference types. When you access renderer.material.mainTexture, you are getting a reference to that object, and when you alter it, you alter the referenced object. What you might be able to do is store a copy of the texture in the script that alters it, then set the mainTexture to that.