Index: GUIFilmstripControl.cs
===================================================================
--- GUIFilmstripControl.cs	(revision 27537)
+++ GUIFilmstripControl.cs	(working copy)
@@ -127,7 +127,9 @@
     [XMLSkinElement("frameFocus")] protected string _frameFocusName = "";
     [XMLSkin("frameFocus", "mask")] protected string _frameFocusMask = "";
     [XMLSkinElement("keepaspectratio")] protected bool _keepAspectRatio = true;
-
+    [XMLSkinElement("thumbZoom")] protected bool _zoom = false;
+    [XMLSkinElement("thumbAlign")] protected Alignment _imageAlignment = Alignment.ALIGN_CENTER;
+    [XMLSkinElement("thumbVAlign")] protected VAlignment _imageVAlignment = VAlignment.ALIGN_BOTTOM;
     [XMLSkin("thumbs", "flipX")] protected bool _flipX = false;
     [XMLSkin("thumbs", "flipY")] protected bool _flipY = false;
     [XMLSkin("thumbs", "diffuse")] protected string _diffuseFileName = "";
@@ -505,12 +507,15 @@
         pImage = pItem.Thumbnail;
         if (null == pImage && _sleeper == 0 && !IsAnimating)
         {
+
           pImage = new GUIImage(0, 0, _thumbNailPositionX - iOverSized + dwPosX,
                                 _thumbNailPositionY - iOverSized + dwPosY, _thumbNailWidth + 2 * iOverSized,
                                 _thumbNailHeight + 2 * iOverSized, pItem.ThumbnailImage, 0x0);
           pImage.ParentControl = this;
           pImage.KeepAspectRatio = _keepAspectRatio;
-          pImage.ZoomFromTop = !pItem.IsFolder;
+          pImage.ZoomFromTop = !pItem.IsFolder && _zoom;
+          pImage.ImageAlignment = _imageAlignment;
+          pImage.ImageVAlignment = _imageVAlignment;
           pImage.FlipX = _flipX;
           pImage.FlipY = _flipY;
           pImage.DiffuseFileName = _diffuseFileName;
@@ -519,10 +524,7 @@
           pImage.AllocResources();
 
           pItem.Thumbnail = pImage;
-          int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2;
-          int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2;
-          pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX + xOff,
-                             _thumbNailPositionY - iOverSized + dwPosY + yOff);
+          pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX, _thumbNailPositionY - iOverSized + dwPosY);
           pImage.DimColor = DimColor;
           _sleeper += SLEEP_FRAME_COUNT;
         }
@@ -533,13 +535,12 @@
             pImage.SafeDispose();
             pImage.AllocResources();
           }
-          pImage.ZoomFromTop = !pItem.IsFolder;
+          pImage.ZoomFromTop = !pItem.IsFolder && _zoom;
+          pImage.ImageAlignment = _imageAlignment;
+          pImage.ImageVAlignment = _imageVAlignment;
           pImage.Width = _thumbNailWidth + 2 * iOverSized;
           pImage.Height = _thumbNailHeight + 2 * iOverSized;
-          int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2;
-          int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2;
-          pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized + xOff,
-                             _thumbNailPositionY - iOverSized + dwPosY + yOff);
+          pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized, _thumbNailPositionY - iOverSized + dwPosY);
           pImage.DimColor = DimColor;
           if (pImage.Focus != itemFocused)
           {
@@ -578,17 +579,16 @@
                                   _thumbNailHeight + 2 * iOverSized, pItem.IconImageBig, 0x0);
             pImage.ParentControl = this;
             pImage.KeepAspectRatio = _keepAspectRatio;
-            pImage.ZoomFromTop = !pItem.IsFolder;
+            pImage.ZoomFromTop = !pItem.IsFolder && _zoom;
+            pImage.ImageAlignment = _imageAlignment;
+            pImage.ImageVAlignment = _imageVAlignment;
             pImage.AllocResources();
             pImage.FlipX = _flipX;
             pImage.FlipY = _flipY;
             pImage.DiffuseFileName = _diffuseFileName;
             pImage.SetAnimations(_allThumbAnimations);
             pItem.IconBig = pImage;
-            int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2;
-            int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2;
-            pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized + xOff,
-                               _thumbNailPositionY - iOverSized + dwPosY + yOff);
+            pImage.SetPosition(_thumbNailPositionX + dwPosX - iOverSized, _thumbNailPositionY - iOverSized + dwPosY);
             pImage.DimColor = DimColor;
             pImage.MaskFileName = _textureMask;
 
@@ -606,13 +606,12 @@
           }
           if (null != pImage)
           {
-            pImage.ZoomFromTop = !pItem.IsFolder;
+            pImage.ZoomFromTop = !pItem.IsFolder && _zoom;
+            pImage.ImageAlignment = _imageAlignment;
+            pImage.ImageVAlignment = _imageVAlignment;
             pImage.Width = _thumbNailWidth + 2 * iOverSized;
             pImage.Height = _thumbNailHeight + 2 * iOverSized;
-            int xOff = (_thumbNailWidth + 2 * iOverSized - pImage.RenderWidth) / 2;
-            int yOff = (_thumbNailHeight + 2 * iOverSized - pImage.RenderHeight) / 2;
-            pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX + xOff,
-                               _thumbNailPositionY - iOverSized + dwPosY + yOff);
+            pImage.SetPosition(_thumbNailPositionX - iOverSized + dwPosX, _thumbNailPositionY - iOverSized + dwPosY);
             pImage.DimColor = DimColor;
 
             if (itemFocused)
