Index: /trunk/src/lib/graphics/text_engine/text.cc
===================================================================
--- /trunk/src/lib/graphics/text_engine/text.cc	(revision 7425)
+++ /trunk/src/lib/graphics/text_engine/text.cc	(revision 7426)
@@ -65,22 +65,24 @@
 void Text::setFont(const std::string& fontFile, unsigned int fontSize)
 {
-  Font* tmpFont;
-  Text* newText;
-  Vector tmpVec;
-
-  // unloading the Font if we alrady have one loaded.
-  if (this->font != NULL && this->font != Font::getDefaultFont())
-    ResourceManager::getInstance()->unload(this->font);
-  this->font = NULL;
+  Font* newFont;
+  Font* oldFont = this->font;
 
   // load a new Font
   if (!fontFile.empty())
   {
-    tmpFont = (Font*)ResourceManager::getInstance()->load(fontFile, TTF, RP_GAME, (int)fontSize);
-    if (tmpFont != NULL)
-      this->font = tmpFont;
-    else
+    newFont = (Font*)ResourceManager::getInstance()->load(fontFile, TTF, RP_GAME, (int)fontSize);
+    if (newFont == NULL)
+    {
+      newFont = Font::getDefaultFont();
       PRINTF(2)("Font %s could not be loaded, probably file not found\n", fontFile.c_str());
-  }
+    }
+  }
+  else
+    newFont = Font::getDefaultFont();
+
+  // unloading the Font if we alrady have one loaded.
+  this->font = newFont;
+  if (oldFont != NULL && oldFont != Font::getDefaultFont())
+    ResourceManager::getInstance()->unload(oldFont);
 }
 
Index: /trunk/src/lib/shell/shell.cc
===================================================================
--- /trunk/src/lib/shell/shell.cc	(revision 7425)
+++ /trunk/src/lib/shell/shell.cc	(revision 7426)
@@ -85,5 +85,5 @@
     // Element2D and generals
     this->setAbsCoor2D(3, -400);
-    this->textSize = 20;
+    this->textSize = 15;
     this->lineSpacing = 0;
     this->bActive = true;
@@ -250,24 +250,28 @@
   void Shell::resetValues()
   {
-    this->shellInput.setFont(this->fontFile, this->textSize);
-    this->shellInput.setColor(this->textColor[0], this->textColor[1], this->textColor[2]);
-    this->shellInput.setBlending(this->textColor[3]);
-    this->shellInput.setRelCoor2D(5, (this->textSize + this->lineSpacing)*(this->bufferDisplaySize));
-    this->shellInput.setLayer(this->getLayer());
-    if (shellInput.getParent2D() != this)
-      this->shellInput.setParent2D(this);
+    this->resetText(&this->shellInput, 0);
+    this->shellInput.setRelCoor2D(15, (this->textSize + this->lineSpacing)*(this->bufferDisplaySize));
 
     unsigned int i = 0;
-    for (std::list<Text*>::iterator text = this->bufferText.begin(); text != this->bufferText.end(); ++text, ++i)
-    {
-      (*text)->setFont(this->fontFile, this->textSize);
-      (*text)->setColor(this->textColor[0], this->textColor[1], this->textColor[2]);
-      (*text)->setBlending(this->textColor[3]);
+    /* Here we create a Copy of the Buffer, so that we do not f**k up the List when some
+     * output is routed from Some other Thread or by Changing any Values.
+     */
+    std::list<Text*> bufferTextCopy = this->bufferText;
+    for (std::list<Text*>::iterator text = bufferTextCopy.begin(); text != bufferTextCopy.end(); ++text, ++i)
+    {
+      this->resetText(*text, i);
       (*text)->setRelCoor2D( calculateLinePosition(i) );
-      (*text)->setLayer(this->getLayer());
-      if ((*text)->getParent2D() != this)
-        (*text)->setParent2D(this);
     }
     this->shellHeight = (this->textSize + this->lineSpacing) * (bufferDisplaySize+1);
+  }
+
+  void Shell::resetText(Text* text, unsigned int position)
+  {
+    text->setFont(this->fontFile, this->textSize);
+    text->setColor(this->textColor[0], this->textColor[1], this->textColor[2]);
+    text->setBlending(this->textColor[3]);
+    text->setLayer(this->getLayer());
+    if (text->getParent2D() != this)
+      text->setParent2D(this);
   }
 
Index: /trunk/src/lib/shell/shell.h
===================================================================
--- /trunk/src/lib/shell/shell.h	(revision 7425)
+++ /trunk/src/lib/shell/shell.h	(revision 7426)
@@ -62,6 +62,4 @@
     void setBackgroundImage(const std::string& fileName);
 
-    void resetValues();
-
     // BUFFERS
     void setBufferDisplaySize(unsigned int bufferDisplaySize);
@@ -81,4 +79,6 @@
 
   private:
+    void resetValues();
+    void resetText(Text* text, unsigned int position);
     // helpers //
     Vector2D calculateLinePosition(unsigned int lineNumber);
