Ok, that solution sounds good.
However, one thing I just thought of that could be a problem with both these designs is texture deletion. Once the Texture instance is destroyed (either with the delete keyword or when it goes out of scope) won't the GraphicsDevice class have a dangling pointer? For example, if you called CreateTexture2D() and the object pointed to by m_texture had been deleted, when the GraphicsDevice instances tries to restore the previously bound texture, it will be calling a member function of a deleted object, causing a crash.
Do you have any ideas on how to fix this issue?
Also, what's FL9? I googled it but I can't seem to find anything.