Index: orxonox/trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4833)
+++ orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4834)
@@ -325,9 +325,4 @@
   glDisable(GL_CULL_FACE);
   glDisable(GL_LIGHTING);  // will be set back when leaving 2D-mode
-  glEnable(GL_TEXTURE_2D);
-
-  /* This allows alpha blending of 2D textures with the scene */
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
   glViewport(0, 0, screen->w, screen->h);
@@ -351,8 +346,8 @@
 void GraphicsEngine::leave2DMode()
 {
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+
   glMatrixMode(GL_MODELVIEW);
-  glPopMatrix();
-
-  glMatrixMode(GL_PROJECTION);
   glPopMatrix();
 
@@ -444,11 +439,11 @@
       this->geTextCFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_DYNAMIC, 0, 255, 0);
       this->geTextCFPS->setAlignment(TEXT_ALIGN_LEFT);
-      this->geTextCFPS->setPosition(5, 500);
+      this->geTextCFPS->setPosition(5, 5);
       this->geTextMaxFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 15, TEXT_DYNAMIC, 0, 255, 0);
       this->geTextMaxFPS->setAlignment(TEXT_ALIGN_LEFT);
-      this->geTextMaxFPS->setPosition(5, 530);
+      this->geTextMaxFPS->setPosition(5, 35);
       this->geTextMinFPS = TextEngine::getInstance()->createText("fonts/arial_black.ttf", 35, TEXT_DYNAMIC, 0, 255, 0);
       this->geTextMinFPS->setAlignment(TEXT_ALIGN_LEFT);
-      this->geTextMinFPS->setPosition(5, 560);
+      this->geTextMinFPS->setPosition(5, 65);
 #endif /* NO_TEXT */
     }
Index: orxonox/trunk/src/lib/graphics/graphics_engine.h
===================================================================
--- orxonox/trunk/src/lib/graphics/graphics_engine.h	(revision 4833)
+++ orxonox/trunk/src/lib/graphics/graphics_engine.h	(revision 4834)
@@ -68,5 +68,5 @@
 
     /** \brief swaps the GL_BUFFERS */
-    static void swapBuffers() { SDL_GL_SwapBuffers(); };
+    inline static void swapBuffers() { SDL_GL_SwapBuffers(); };
 
     void process(const Event  &event);
Index: orxonox/trunk/src/lib/graphics/importer/material.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/material.cc	(revision 4833)
+++ orxonox/trunk/src/lib/graphics/importer/material.cc	(revision 4834)
@@ -57,6 +57,11 @@
 {
   PRINTF(4)("delete Material %s.\n", this->getName());
+
   if (this->diffuseTexture)
     ResourceManager::getInstance()->unload(this->diffuseTexture);
+  if (this->ambientTexture)
+    ResourceManager::getInstance()->unload(this->ambientTexture);
+  if (this->specularTexture)
+    ResourceManager::getInstance()->unload(this->specularTexture);
 }
 
@@ -267,7 +272,10 @@
     ResourceManager::getInstance()->unload(this->diffuseTexture);
 
-  //! \todo check if RESOURCE MANAGER is availiable
-  //! \todo Textures from .mtl-file need special care.
-  this->diffuseTexture = (Texture*)ResourceManager::getInstance()->load(dMap, IMAGE);
+  //! @todo check if RESOURCE MANAGER is availiable
+  //! @todo Textures from .mtl-file need special care.
+  if (dMap!= NULL)
+    this->diffuseTexture = (Texture*)ResourceManager::getInstance()->load(dMap, IMAGE);
+  else
+    this->diffuseTexture = NULL;
 }
 
Index: orxonox/trunk/src/lib/graphics/importer/model.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/model.cc	(revision 4833)
+++ orxonox/trunk/src/lib/graphics/importer/model.cc	(revision 4834)
@@ -159,4 +159,5 @@
 
   this->materialList = new tList<Material>;
+  this->materialsExtern = false;
 
   if (this->type == MODEL_VERTEX_ARRAY)
@@ -186,15 +187,18 @@
 
   // deleting the MaterialList
-  PRINTF(5)("Deleting Materials.\n");
-  tIterator<Material>* tmpIt = this->materialList->getIterator();
-  Material* material = tmpIt->nextElement();
-
-  //! \todo do we really have to delete this material??
-  while(material)
+  if (!this->materialsExtern)
+  {
+    PRINTF(5)("Deleting Materials.\n");
+
+    tIterator<Material>* tmpIt = this->materialList->getIterator();
+    Material* material = tmpIt->nextElement();
+  //! @todo do we really have to delete this material??
+    while(material)
     {
       delete material;
       material = tmpIt->nextElement();
     }
-  delete tmpIt;
+    delete tmpIt;
+  }
   delete materialList;
   delete this->pModelInfo;
@@ -356,5 +360,7 @@
 /**
    \brief finalizes an Model.
-   This funcion is needed, to delete all the Lists, and arrays that are no more needed because they are already imported into openGL. This will be applied at the end of the importing Process.
+ * This funcion is needed, to delete all the Lists, and arrays that are no more
+ * needed because they are already imported into openGL.
+ * This will be applied at the end of the importing Process.
 */
 bool Model::cleanup()
@@ -372,10 +378,13 @@
    \param material the Material to add
    \returns the added material
-
-   !! beware the Material will be deleted when the Model gets deleted
+ *
+ * this also tells this Model, that all the Materials are handled externally
+ * with this option set the Materials will not be deleted with the Model.
+ * !! -> NO MATERIALS GET DELETED WITH ONE CALL TO THIS FUNCTION !!
 */
 Material* Model::addMaterial(Material* material)
 {
   this->materialList->add(material);
+  this->materialsExtern = true;
   return material;
 }
Index: orxonox/trunk/src/lib/graphics/importer/model.h
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/model.h	(revision 4833)
+++ orxonox/trunk/src/lib/graphics/importer/model.h	(revision 4834)
@@ -190,4 +190,5 @@
 
   tList<Material>* materialList;    //!< A list for all the Materials in this Model
+  bool             materialsExtern; //!< If the materials given to this Object are extern.
 };
 
Index: orxonox/trunk/src/lib/graphics/text_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 4833)
+++ orxonox/trunk/src/lib/graphics/text_engine.cc	(revision 4834)
@@ -919,4 +919,8 @@
   // entering 3D-mode
   GraphicsEngine::enter2DMode();
+  glEnable(GL_TEXTURE_2D);
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
   // drawing all the texts
   tIterator<Text>* textIterator = textList->getIterator();
