Index: trunk/src/lib/graphics/importer/multi_frame_texture.h
===================================================================
--- trunk/src/lib/graphics/importer/multi_frame_texture.h	(revision 5858)
+++ trunk/src/lib/graphics/importer/multi_frame_texture.h	(revision 5859)
@@ -27,7 +27,7 @@
 
       /** @returns The textureID of this texture.  */
-      inline GLuint getFrameTexture(unsigned int frameNumber);// const { return this->textures; };
+      inline GLuint getFrameTexture(unsigned int frameNumber) const { return this->textures[frameNumber]; };
 
-      const SDL_Surface* const getFrameImage() const {  };
+      const SDL_Surface* const getFrameImage(unsigned int frameNumber) const { return this->images[frameNumber]; };
 
     private:
Index: trunk/src/lib/graphics/importer/texture.cc
===================================================================
--- trunk/src/lib/graphics/importer/texture.cc	(revision 5858)
+++ trunk/src/lib/graphics/importer/texture.cc	(revision 5859)
@@ -86,6 +86,12 @@
           {
             PRINTF(4)("loading Image %s\n", imageName);
-            if (this->prepareSurface(tmpSurf))
-              this->texture = Texture::loadTexToGL(this->image);
+            bool hasAlpha;
+            SDL_Surface* newSurf = this->prepareSurface(tmpSurf, hasAlpha);
+            if (newSurf != NULL)
+            {
+              this->setSurface(newSurf);
+              this->setAlpha(hasAlpha);
+              this->setTexture(Texture::loadTexToGL(newSurf));
+            }
 
             SDL_FreeSurface(tmpSurf);
@@ -113,5 +119,5 @@
     {
       glDeleteTextures(1,&this->texture);
-      this->texture = 0;
+      this->setTexture(0);
     }
 
@@ -119,5 +125,5 @@
     {
       PRINTF(3)("Reloading Texture of %s '%s'\n", this->getClassName(), this->getName());
-      this->texture = loadTexToGL(this->image);
+      this->setTexture(loadTexToGL(this->image));
     }
 
@@ -127,16 +133,18 @@
  * converts surface to a new SDL_Surface, that is loadable by openGL
  * @param surface the Surface to convert
+ * @param hasAlpha if the newly created Surface has an alpha channel, true is returned otherwise false.
  * @returns a !!new!! Surface, that is loadable by openGL.
  */
-bool Texture::prepareSurface(SDL_Surface* surface)
+SDL_Surface* Texture::prepareSurface(SDL_Surface* surface, bool& hasAlpha)
 {
   PRINTF(4)("Loading texture to OpenGL-Environment.\n");
 
-  SDL_Surface* putSurface;
+  SDL_Surface* retSurface;
   SDL_Rect area;
   Uint32 saved_flags;
   Uint8  saved_alpha;
 
-  putSurface = SDL_CreateRGBSurface(SDL_SWSURFACE,
+  hasAlpha = false;
+  retSurface = SDL_CreateRGBSurface(SDL_SWSURFACE,
                                surface->w, surface->h,
                                32,
@@ -153,8 +161,7 @@
 #endif
                                );
-  if ( putSurface == NULL )
+  if ( retSurface == NULL )
   {
-    this->setSurface(NULL);
-    return false;
+    return NULL;
   }
 
@@ -171,5 +178,5 @@
   area.w = surface->w;
   area.h = surface->h;
-  SDL_BlitSurface(surface, &area, putSurface, &area);
+  SDL_BlitSurface(surface, &area, retSurface, &area);
 
   /* Restore the alpha blending attributes */
@@ -177,10 +184,17 @@
   {
     SDL_SetAlpha(surface, saved_flags | SDL_OPENGL, saved_alpha);
-    this->bAlpha = true;
-  }
-
-  return (this->setSurface(putSurface));
-}
-
+    hasAlpha = true;
+  }
+
+  return (retSurface);
+}
+
+/**
+ * set the surface this Texture handles
+ * @param newSurface the new Surface to set as the image for this Texture.
+ *
+ * This deletes the old version of the stored Texture,
+ * and sets the newly given Surface as current.
+ */
 bool Texture::setSurface(SDL_Surface* newSurface)
 {
Index: trunk/src/lib/graphics/importer/texture.h
===================================================================
--- trunk/src/lib/graphics/importer/texture.h	(revision 5858)
+++ trunk/src/lib/graphics/importer/texture.h	(revision 5859)
@@ -39,9 +39,11 @@
 
       // Utility functionality:
+      static SDL_Surface* prepareSurface(SDL_Surface* input, bool& hasAlpha);
       static GLuint loadTexToGL (const SDL_Surface* surface);
 
     protected:
-      bool prepareSurface(SDL_Surface* input);
+
       bool setSurface(SDL_Surface* newSurface);
+      bool setAlpha(bool hasAlpha) { this->bAlpha = hasAlpha; };
       bool setTexture(GLuint texture) { this->texture = texture; };
 
Index: trunk/src/lib/graphics/text_engine/font.cc
===================================================================
--- trunk/src/lib/graphics/text_engine/font.cc	(revision 5858)
+++ trunk/src/lib/graphics/text_engine/font.cc	(revision 5859)
@@ -181,7 +181,11 @@
     this->fontTTF = NULL;
   }
-  if (this->prepareSurface(surface))
-  {
-    this->setTexture(Texture::loadTexToGL(this->getStoredImage()));
+  bool hasAlpha;
+  SDL_Surface* newSurf = this->prepareSurface(surface, hasAlpha);
+  if (newSurf != NULL)
+  {
+    this->setSurface(newSurf);
+    this->setAlpha(hasAlpha);
+    this->setTexture(Texture::loadTexToGL(newSurf));
   }
 
