diff --git a/src/libtomahawk/utils/AnimatedSpinner.cpp b/src/libtomahawk/utils/AnimatedSpinner.cpp
index 25b0dc497..7f8c94b7d 100644
--- a/src/libtomahawk/utils/AnimatedSpinner.cpp
+++ b/src/libtomahawk/utils/AnimatedSpinner.cpp
@@ -35,11 +35,6 @@ AnimatedSpinner::AnimatedSpinner( QWidget *parent )
     , m_currentIndex( -1 )
 {
     init();
-    m_radius = 10;
-    m_armLength = sizeHint().width()/2 - m_radius;
-    m_armWidth = 5;
-    m_border = 3;
-    m_armRect = QRect( m_radius, 0, m_armLength, m_armWidth );
 }
 
 
@@ -54,23 +49,6 @@ AnimatedSpinner::AnimatedSpinner( const QSize size, bool autoStart )
 
     init();
 
-    if ( size.width() < 30 )
-    {
-        m_radius = 4;
-        m_armLength = size.width()/2 - m_radius;
-        m_armWidth = 2;
-        m_border = 2;
-        m_armRect = QRect( m_radius, 0, m_armLength, m_armWidth );
-    }
-    else
-    {
-        m_radius = 10;
-        m_armLength = size.width()/2 - m_radius;
-        m_armWidth = 5;
-        m_border = 3;
-        m_armRect = QRect( m_radius, 0, m_armLength, m_armWidth );
-    }
-
     if ( autoStart )
         fadeIn();
 }
@@ -102,6 +80,28 @@ AnimatedSpinner::init()
 
     m_colors.resize( segmentCount() );
 
+    QSize size;
+    if ( parentWidget() )
+        size = sizeHint();
+    else
+        size = m_pixmap.size();
+    if ( size.width() < 30 )
+    {
+        m_radius = 4;
+        m_armLength = size.width()/2 - m_radius;
+        m_armWidth = 2;
+        m_border = 2;
+        m_armRect = QRect( m_radius, 0, m_armLength, m_armWidth );
+    }
+    else
+    {
+        m_radius = 10;
+        m_armLength = size.width()/2 - m_radius;
+        m_armWidth = 5;
+        m_border = 3;
+        m_armRect = QRect( m_radius, 0, m_armLength, m_armWidth );
+    }
+
     hide();
 }
 
@@ -150,7 +150,7 @@ AnimatedSpinner::drawFrame( QPainter* p, const QRect& rect )
 
     p->setRenderHint(QPainter::Antialiasing, true);
 
-    p->translate( rect.center() ); // center
+    p->translate( rect.center() + QPoint( 0, 1 ) ); // center
 
     const qreal stepRadius = (360 + 2*m_armWidth) / segmentCount();
     p->rotate( stepRadius );