diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp
index 2065d8078..f360c7f22 100644
--- a/src/libtomahawk/playlist/TrackView.cpp
+++ b/src/libtomahawk/playlist/TrackView.cpp
@@ -562,6 +562,16 @@ TrackView::paintEvent( QPaintEvent* event )
 }
 
 
+void
+TrackView::wheelEvent( QWheelEvent* event )
+{
+    QTreeView::wheelEvent( event );
+
+    m_delegate->resetHoverIndex();
+    repaint();
+}
+
+
 void
 TrackView::onFilterChanged( const QString& )
 {
diff --git a/src/libtomahawk/playlist/TrackView.h b/src/libtomahawk/playlist/TrackView.h
index ef6a91717..a793f6d16 100644
--- a/src/libtomahawk/playlist/TrackView.h
+++ b/src/libtomahawk/playlist/TrackView.h
@@ -113,6 +113,7 @@ protected:
 
     virtual void paintEvent( QPaintEvent* event );
     virtual void keyPressEvent( QKeyEvent* event );
+    virtual void wheelEvent( QWheelEvent* event );
 
 protected slots:
     virtual void currentChanged( const QModelIndex& current, const QModelIndex& previous );
diff --git a/src/libtomahawk/playlist/TreeView.cpp b/src/libtomahawk/playlist/TreeView.cpp
index 657a2efab..7116e3c55 100644
--- a/src/libtomahawk/playlist/TreeView.cpp
+++ b/src/libtomahawk/playlist/TreeView.cpp
@@ -53,6 +53,7 @@ TreeView::TreeView( QWidget* parent )
     , m_overlay( new OverlayWidget( this ) )
     , m_model( 0 )
     , m_proxyModel( 0 )
+    , m_delegate( 0 )
     , m_loadingSpinner( new LoadingSpinner( this ) )
     , m_updateContextView( true )
     , m_contextMenu( new ContextMenu( this ) )
@@ -99,9 +100,9 @@ void
 TreeView::setProxyModel( TreeProxyModel* model )
 {
     m_proxyModel = model;
-    TreeItemDelegate* del = new TreeItemDelegate( this, m_proxyModel );
-    connect( del, SIGNAL( updateIndex( QModelIndex ) ), this, SLOT( update( QModelIndex ) ) );
-    setItemDelegate( del );
+    m_delegate = new TreeItemDelegate( this, m_proxyModel );
+    connect( m_delegate, SIGNAL( updateIndex( QModelIndex ) ), SLOT( update( QModelIndex ) ) );
+    setItemDelegate( m_delegate );
 
     QTreeView::setModel( m_proxyModel );
 }
@@ -285,6 +286,16 @@ TreeView::resizeEvent( QResizeEvent* event )
 }
 
 
+void
+TreeView::wheelEvent( QWheelEvent* event )
+{
+    QTreeView::wheelEvent( event );
+
+    m_delegate->resetHoverIndex();
+    repaint();
+}
+
+
 void
 TreeView::onFilterChangeFinished()
 {
diff --git a/src/libtomahawk/playlist/TreeView.h b/src/libtomahawk/playlist/TreeView.h
index 222e3da80..5b07f50bb 100644
--- a/src/libtomahawk/playlist/TreeView.h
+++ b/src/libtomahawk/playlist/TreeView.h
@@ -40,6 +40,7 @@ class ViewHeader;
 class AnimatedSpinner;
 class OverlayWidget;
 class TreeModel;
+class TreeItemDelegate;
 
 class DLLEXPORT TreeView : public QTreeView
 {
@@ -79,6 +80,7 @@ protected:
     virtual void resizeEvent( QResizeEvent* event );
 
     virtual void keyPressEvent( QKeyEvent* event );
+    virtual void wheelEvent( QWheelEvent* event );
 
 protected slots:
     virtual void currentChanged( const QModelIndex& current, const QModelIndex& previous );
@@ -97,6 +99,7 @@ private:
     OverlayWidget* m_overlay;
     TreeModel* m_model;
     TreeProxyModel* m_proxyModel;
+    TreeItemDelegate* m_delegate;
     AnimatedSpinner* m_loadingSpinner;
 
     bool m_updateContextView;