diff --git a/libs/taxidermy/QWidgetBuilder.cpp b/libs/taxidermy/QWidgetBuilder.cpp
index fc3af9a0b2ba9436f0ba4db81cfca1a1f7e07016..b91588b248907d614ef8d8c2a899d7d8061a1933 100644
--- a/libs/taxidermy/QWidgetBuilder.cpp
+++ b/libs/taxidermy/QWidgetBuilder.cpp
@@ -29,6 +29,7 @@ taxidermy::QWidgetBuilder::QWidgetBuilder()
   : WidgetBuilder("QWidget")
   , mWidget(NULL)
   , mPosSet(false)
+  , mSizeSet(false)
 {}
 
 void
@@ -42,9 +43,22 @@ taxidermy::QWidgetBuilder::load(const QMap< QString, QString > &values)
     mY = (*ypos).toInt();
   }
 
-  QMap< QString, QString >::ConstIterator background = values.find("background");
-  if(background != values.end()) {
-    mBackground = qtutils::transparize(*background);
+  QMap< QString, QString >::ConstIterator height = values.find("height");
+  QMap< QString, QString >::ConstIterator width = values.find("width");
+  if(height != values.end() && width != values.end()) {
+    mSizeSet = true;
+    mHeight = (*height).toInt();
+    mWidth = (*width).toInt();
+  }
+
+  QMap< QString, QString >::ConstIterator bimage = values.find("bImage");
+  if(bimage != values.end()) {
+    mBackgroundImage = qtutils::transparize(*bimage);
+  }
+
+  QMap< QString, QString >::ConstIterator bcolor = values.find("bColor");
+  if(bcolor != values.end()) {
+    mBackgroundColor = QColor(*bcolor);
   }
 }
 
@@ -64,12 +78,21 @@ taxidermy::QWidgetBuilder::update(QWidget *widget)
       mWidget->move(mX, mY);
     }
 
-    if(!mBackground.isNull()) {
-      mWidget->setPaletteBackgroundPixmap(mBackground);
-      if(mBackground.hasAlpha()) {
-	mWidget->setMask(*mBackground.mask());
+    if(!mBackgroundImage.isNull()) {
+      mWidget->setPaletteBackgroundPixmap(mBackgroundImage);
+      if(mBackgroundImage.hasAlpha()) {
+	mWidget->setMask(*mBackgroundImage.mask());
       }
-      mWidget->resize(mBackground.size());
+      mWidget->resize(mBackgroundImage.size());
+    }
+    else if(mBackgroundColor.isValid()) {
+      mWidget->setPaletteBackgroundColor(mBackgroundColor);
+    }
+
+    //If the user took the energy to specify the size,
+    //Then we must use this size.
+    if(mSizeSet) {
+      mWidget->resize(mWidth, mHeight);
     }
   }
 }
diff --git a/libs/taxidermy/QWidgetBuilder.hpp b/libs/taxidermy/QWidgetBuilder.hpp
index ae93df067ce6fc3eb67116b74ff1afffeb818d3c..8d3a58f3519ee473b5abea22ecefe9ced27adeb5 100644
--- a/libs/taxidermy/QWidgetBuilder.hpp
+++ b/libs/taxidermy/QWidgetBuilder.hpp
@@ -21,6 +21,7 @@
 #ifndef __TAXIDERMY_QWIDGET_BUILDER_HPP__
 #define __TAXIDERMY_QWIDGET_BUILDER_HPP__
 
+#include <qcolor.h>
 #include <qpixmap.h>
 #include <qwidget.h>
 
@@ -40,8 +41,14 @@ namespace taxidermy
     int mX;
     int mY;
 
+    //Size
+    bool mSizeSet;
+    int mWidth;
+    int mHeight;
+
     //Images
-    QPixmap mBackground;
+    QPixmap mBackgroundImage;
+    QColor mBackgroundColor;
 
   public:
     QWidgetBuilder();
diff --git a/libs/taxidermy/qtutils.cpp b/libs/taxidermy/qtutils.cpp
index 331fb591e0c3099ef2c497bee75e1315226a3f39..68b9d7d0908fb42c9e456616c78b7e6340a7be46 100644
--- a/libs/taxidermy/qtutils.cpp
+++ b/libs/taxidermy/qtutils.cpp
@@ -33,7 +33,7 @@ taxidermy::qtutils::addFilePath(const QString &path)
 }
 
 QPixmap 
-taxidermy::qtutils::transparize(const QString &image)
+taxidermy::qtutils::transparize(const QString &image, bool hard)
 {
 #ifdef QT3_SUPPORT
   QPixmap p(retreive(image));
@@ -55,7 +55,7 @@ taxidermy::qtutils::transparize(const QString &image)
     if (img.hasAlphaBuffer()) {
       bm = img.createAlphaMask();
     } 
-    else {
+    else if(hard) {
       bm = img.createHeuristicMask();
     }
     p.setMask(bm);
diff --git a/libs/taxidermy/qtutils.hpp b/libs/taxidermy/qtutils.hpp
index 6361b4a2de1197d0c8a1c012677ed34fa19455cb..6d5c4f4a47121efbc5dd916a732fa2b43bbfbe0a 100644
--- a/libs/taxidermy/qtutils.hpp
+++ b/libs/taxidermy/qtutils.hpp
@@ -24,7 +24,7 @@ namespace taxidermy
 {
   namespace qtutils
   {
-    QPixmap transparize(const QString &image);
+    QPixmap transparize(const QString &image, bool hard = false);
     void addFilePath(const QString &path);
 
   };
diff --git a/skins/gmetal.ini b/skins/gmetal.ini
index a464e6eedfefbcc384a09ab4fef26f2e4453e74c..33bc6b86bee5fa2572dd52f071ac5a1c764b31cb 100644
--- a/skins/gmetal.ini
+++ b/skins/gmetal.ini
@@ -168,6 +168,22 @@ pressed=redial_on.png
 released=redial_off.png
 paint=1
 
+[main]
+type=QWidget
+bImage=main.png
+
+[screen]
+type=QWidget
+x=22
+y=44
+bImage=screen_green.png
+bColor=gray
+
+[overscreen]
+type=QWidget
+bImage=overscreen.png
+
+
 # DTMF Keypad
 #dtmf_1=12,22
 #dtmf_2=58,22
diff --git a/skins/gmetal/main.png b/skins/gmetal/main.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddf434171b5f5b93f31616615a603bbb593b4475
Binary files /dev/null and b/skins/gmetal/main.png differ
diff --git a/images/overscreen.png b/skins/gmetal/overscreen.png
similarity index 100%
rename from images/overscreen.png
rename to skins/gmetal/overscreen.png
diff --git a/images/screen_green.png b/skins/gmetal/screen_green.png
similarity index 68%
rename from images/screen_green.png
rename to skins/gmetal/screen_green.png
index 6b7ffadd9f338753a1742f24f886887e2d92de7e..4ab465eea11116d8d9ffeb9b8122af743ee340c0 100644
Binary files a/images/screen_green.png and b/skins/gmetal/screen_green.png differ
diff --git a/skins/metal.ini b/skins/metal.ini
index d4267b9c028579fbc808081acff14aa2bd4469a7..ea15fd6195767255577e33e76cf8edd99bd4eba9 100644
--- a/skins/metal.ini
+++ b/skins/metal.ini
@@ -170,8 +170,19 @@ paint=1
 
 [main]
 type=QWidget
-background=main.png
+bImage=main.png
 
+[screen]
+type=QWidget
+x=22
+y=44
+width=184
+height=98
+bImage=screen_main.png
+
+[overscreen]
+type=QWidget
+bImage=overscreen.png
 
 # DTMF Keypad
 #dtmf_1=12,22
diff --git a/skins/metal/l1_off.png b/skins/metal/l1_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..864c2556cdfd48c1717d01ac1ee2da0bba9c64d0
Binary files /dev/null and b/skins/metal/l1_off.png differ
diff --git a/skins/metal/l2_off.png b/skins/metal/l2_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..c770ff6bce5cb7458b4b5d018e1d6a729d7a6d5d
Binary files /dev/null and b/skins/metal/l2_off.png differ
diff --git a/skins/metal/l3_off.png b/skins/metal/l3_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..345206f17d79376685c24ad9970ca157c8b0b25b
Binary files /dev/null and b/skins/metal/l3_off.png differ
diff --git a/skins/metal/l4_off.png b/skins/metal/l4_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..bef390ac4082e50f4934ca6b947e4f558493daf2
Binary files /dev/null and b/skins/metal/l4_off.png differ
diff --git a/skins/metal/l5_off.png b/skins/metal/l5_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..1303ed2ce264f2d335f79e04fb5ec6738b0cdea4
Binary files /dev/null and b/skins/metal/l5_off.png differ
diff --git a/skins/metal/l6_off.png b/skins/metal/l6_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5e7ec474e364a66ee009cfbbcdeb50e9be651f5
Binary files /dev/null and b/skins/metal/l6_off.png differ
diff --git a/skins/metal/overscreen.png b/skins/metal/overscreen.png
new file mode 100644
index 0000000000000000000000000000000000000000..704cbbdbac5174e79260c345834cf47c78984134
Binary files /dev/null and b/skins/metal/overscreen.png differ
diff --git a/images/screen_main.png b/skins/metal/screen_main.png
similarity index 100%
rename from images/screen_main.png
rename to skins/metal/screen_main.png
diff --git a/src/gui/qt/SFLLcd.cpp b/src/gui/qt/SFLLcd.cpp
index 4051cf666e6100740da9adc8614ed96e7c13500a..b44bc8311a51604961e8831c8c42d477319515bc 100644
--- a/src/gui/qt/SFLLcd.cpp
+++ b/src/gui/qt/SFLLcd.cpp
@@ -42,9 +42,8 @@
 #define OVERSCREEN "overscreen.png"
 
 SFLLcd::SFLLcd(QWidget *parent)
-  : QLabel(parent, "SFLLcd", Qt::WNoAutoErase)
-  , mScreen(TransparentWidget::retreive(SCREEN))
-  , mOverscreen(TransparentWidget::retreive(OVERSCREEN))
+  : QLabel(parent, "screen", Qt::WNoAutoErase)
+  , mOverscreen(parent, "overscreen")
   , mGlobalStatusPos(-1)
   , mUnselectedLineStatusPos(-1)
   , mLineStatusPos(-1)
@@ -53,9 +52,9 @@ SFLLcd::SFLLcd(QWidget *parent)
   , mIsTimed(false)
   , mFont(FONT_FAMILY, FONT_SIZE)
 {
-  resize(mScreen.size());
-  move(22,44);
-  
+  setPaletteBackgroundColor(QColor("gray"));
+  mOverscreen.setPaletteBackgroundColor(QColor("gray"));
+  //mOverscreen.hide();
   mUnselectedLineTimer = new QTimer(this);
   QObject::connect(mUnselectedLineTimer, SIGNAL(timeout()), 
 		   this, SLOT(updateGlobalText()));
@@ -195,7 +194,7 @@ void
 SFLLcd::paintEvent(QPaintEvent *event) 
 {
   static QPixmap pixmap(size());
-
+  pixmap.resize(size());
   QRect rect = event->rect();
   QSize newSize = rect.size().expandedTo(pixmap.size());
   pixmap.resize(newSize);
@@ -218,7 +217,8 @@ SFLLcd::paintEvent(QPaintEvent *event)
 
   int margin = 2;
   p.setFont(mFont);
-  p.drawPixmap(0,0, mScreen);
+  QPoint pointtest(margin, fm.height());
+
   p.drawText(QPoint(margin, fm.height()), 
 	     extractVisibleText(globalStatus, *globalStatusPos));
   p.drawText(QPoint(margin, 2*fm.height()), 
@@ -228,11 +228,14 @@ SFLLcd::paintEvent(QPaintEvent *event)
   p.drawText(QPoint(margin, 4*fm.height()), 
 	     extractVisibleText(mBufferStatus, mBufferStatusPos));
 
-  p.drawText(QPoint(margin, mScreen.size().height() - margin), getTimeStatus());
-  p.drawPixmap(0,0, mOverscreen);
+  p.drawText(QPoint(margin, pixmap.size().height() - margin), getTimeStatus());
+  const QPixmap *pix = mOverscreen.paletteBackgroundPixmap();
+  if(pix != NULL && !pix->isNull()) {
+    p.drawPixmap(0,0, *pix);
+  }
   p.end();
 
-  bitBlt(this, event->rect().topLeft(), &pixmap);
+  bitBlt(this, QPoint(0,0), &pixmap);
 }
 
 bool 
@@ -240,7 +243,7 @@ SFLLcd::textIsTooBig(const QString &text)
 {
   QFontMetrics fm(mFont);
 
-  int screenWidth = mScreen.width() - 4;
+  int screenWidth = width() - 4;
   int textWidth = fm.boundingRect(text).width();
 
   if(textWidth > screenWidth) {
diff --git a/src/gui/qt/SFLLcd.hpp b/src/gui/qt/SFLLcd.hpp
index 878e426c42d00ecabcf518ea57bc10a2db462a4c..00772c5291679bb4b4f5b60c24dfd72b1b0ccfc9 100644
--- a/src/gui/qt/SFLLcd.hpp
+++ b/src/gui/qt/SFLLcd.hpp
@@ -63,8 +63,7 @@ private:
   void dragEnterEvent(QDragEnterEvent* event);
   void dropEvent(QDropEvent* event);
 
-  QPixmap mScreen;
-  QPixmap mOverscreen;
+  QLabel mOverscreen;
   
   QString mGlobalStatus;
   QString mUnselectedLineStatus;