Index: GUICoverFlow.cs
===================================================================
--- GUICoverFlow.cs	(revision 27432)
+++ GUICoverFlow.cs	(working copy)
@@ -101,6 +101,10 @@
     [XMLSkinElement("scrollbarWidth")] protected int _scrollbarWidth = 400;
     [XMLSkinElement("scrollbarHeight")] protected int _scrollbarHeight = 15;
     [XMLSkinElement("showScrollbar")] protected bool _showScrollbar = true;
+    [XMLSkinElement("keepaspectratio")] protected bool _keepAspectRatio = true;
+    [XMLSkinElement("thumbZoom")] protected bool _zoom = false;
+    [XMLSkinElement("cardAlign")] protected Alignment _imageAlignment = Alignment.ALIGN_CENTER;
+    [XMLSkinElement("cardVAlign")] protected VAlignment _imageVAlignment = VAlignment.ALIGN_BOTTOM;
     [XMLSkin("cards", "flipY")] protected bool _flipY = false;
     [XMLSkin("cards", "diffuse")] protected string _diffuseFilename = "";
     [XMLSkin("cards", "mask")] protected string _maskFilename = "";
@@ -224,11 +228,11 @@
       int scrollbarHeight = _scrollbarHeight;
       GUIGraphicsContext.ScaleHorizontal(ref scrollbarWidth);
       GUIGraphicsContext.ScaleVertical(ref scrollbarHeight);
-      int scrollbarPosX = _positionX + (_width / 2) - (_scrollbarWidth / 2);
+      int scrollbarPosX = _positionX + (_width / 2) - (scrollbarWidth / 2);
 
       _horizontalScrollbar = new GUIHorizontalScrollbar(_controlId, 0,
                                                         scrollbarPosX, _positionY + _scrollbarOffsetY,
-                                                        _scrollbarWidth, _scrollbarHeight,
+                                                        scrollbarWidth, scrollbarHeight,
                                                         _scrollbarBackgroundTextureName, _scrollbarLeftTextureName,
                                                         _scrollbarRightTextureName);
       _horizontalScrollbar.ParentControl = this;
@@ -1088,8 +1092,10 @@
                                pItem.ThumbnailImage, 0x0);
 
           pCard.ParentControl = null; // We want to be able to treat each card as a control.
-          pCard.KeepAspectRatio = true;
-          pCard.Zoom = !pItem.IsFolder;
+          pCard.KeepAspectRatio = _keepAspectRatio;
+          pCard.ZoomFromTop = !pItem.IsFolder && _zoom;
+          pCard.ImageAlignment = _imageAlignment;
+          pCard.ImageVAlignment = _imageVAlignment;
           pCard.FlipY = _flipY;
           pCard.DiffuseFileName = _diffuseFilename;
           pCard.MaskFileName = _maskFilename;
@@ -1119,8 +1125,10 @@
           }
 
           // Ensure our card is setup as we expect because other views (filmstrip) may have changed these values.
-          pCard.KeepAspectRatio = true;
-          pCard.Zoom = !pItem.IsFolder;
+          pCard.KeepAspectRatio = _keepAspectRatio;
+          pCard.ZoomFromTop = !pItem.IsFolder && _zoom;
+          pCard.ImageAlignment = _imageAlignment;
+          pCard.ImageVAlignment = _imageVAlignment;
           pCard.FlipY = _flipY;
           pCard.DiffuseFileName = _diffuseFilename;
           pCard.MaskFileName = _maskFilename;
@@ -1146,8 +1154,10 @@
                                pItem.IconImageBig, 0x0);
 
           pCard.ParentControl = null; // We want to be able to treat each card as a control.
-          pCard.KeepAspectRatio = true;
-          pCard.Zoom = !pItem.IsFolder;
+          pCard.KeepAspectRatio = _keepAspectRatio;
+          pCard.ZoomFromTop = !pItem.IsFolder && _zoom;
+          pCard.ImageAlignment = _imageAlignment;
+          pCard.ImageVAlignment = _imageVAlignment;
           pCard.FlipY = _flipY;
           pCard.DiffuseFileName = _diffuseFilename;
           pCard.MaskFileName = _maskFilename;
@@ -1170,8 +1180,10 @@
           }
 
           // Ensure our card is setup as we expect because other views (filmstrip) may have changed these values.
-          pCard.KeepAspectRatio = true;
-          pCard.Zoom = !pItem.IsFolder;
+          pCard.KeepAspectRatio = _keepAspectRatio;
+          pCard.ZoomFromTop = !pItem.IsFolder && _zoom;
+          pCard.ImageAlignment = _imageAlignment;
+          pCard.ImageVAlignment = _imageVAlignment;
           pCard.FlipY = _flipY;
           pCard.DiffuseFileName = _diffuseFilename;
           pCard.MaskFileName = _maskFilename;
@@ -1758,7 +1770,7 @@
       {
         // Set the location for the origin of the cover flow to the horizontal center of the window.
         GUIGraphicsContext.LoadIdentity();
-        GUIGraphicsContext.Translate(Width / 2, YPosition, 0);
+        GUIGraphicsContext.Translate(XPosition + Width / 2, YPosition, 0);
 
         // Calculate the fractional position of the selected card as it animates from the left or right stack.
         // These fractional components are used to adjust the rendered position and angle of the card.
