diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.js
index 9ee3af4d1e5becd2dd4cd7f602975e2493072abf..39909d98bd83a976c2bd363c7b58ba2919c6bf61 100644
--- a/app/javascript/mastodon/components/status_list.js
+++ b/app/javascript/mastodon/components/status_list.js
@@ -15,6 +15,7 @@ class StatusList extends ImmutablePureComponent {
     onScrollToBottom: PropTypes.func,
     onScrollToTop: PropTypes.func,
     onScroll: PropTypes.func,
+    trackScroll: PropTypes.bool,
     shouldUpdateScroll: PropTypes.func,
     isLoading: PropTypes.bool,
     isUnread: PropTypes.bool,
@@ -88,7 +89,7 @@ class StatusList extends ImmutablePureComponent {
   }
 
   render () {
-    const { statusIds, onScrollToBottom, scrollKey, shouldUpdateScroll, isLoading, isUnread, hasMore, prepend, emptyMessage } = this.props;
+    const { statusIds, onScrollToBottom, scrollKey, trackScroll, shouldUpdateScroll, isLoading, isUnread, hasMore, prepend, emptyMessage } = this.props;
 
     let loadMore       = null;
     let scrollableArea = null;
@@ -126,11 +127,15 @@ class StatusList extends ImmutablePureComponent {
       );
     }
 
-    return (
-      <ScrollContainer scrollKey={scrollKey} shouldUpdateScroll={shouldUpdateScroll}>
-        {scrollableArea}
-      </ScrollContainer>
-    );
+    if (trackScroll) {
+      return (
+        <ScrollContainer scrollKey={scrollKey} shouldUpdateScroll={shouldUpdateScroll}>
+          {scrollableArea}
+        </ScrollContainer>
+      );
+    } else {
+      return scrollableArea;
+    }
   }
 
 }
diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js
index 6d25811410507792cf4abe0bbb89c63173ac3c2f..1dd8a08ab3ed18608ab0cdd71c9e5cb5571ea4a5 100644
--- a/app/javascript/mastodon/features/community_timeline/index.js
+++ b/app/javascript/mastodon/features/community_timeline/index.js
@@ -124,6 +124,7 @@ class CommunityTimeline extends React.PureComponent {
 
         <StatusListContainer
           {...this.props}
+          trackScroll={!pinned}
           scrollKey={`community_timeline-${columnId}`}
           type='community'
           emptyMessage={<FormattedMessage id='empty_column.community' defaultMessage='The local timeline is empty. Write something publicly to get the ball rolling!' />}
diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js
index 7f7b3e075b7cab3ef1e5906224c6cc0148f273cd..da43e9403310d273dc0a3888a046413910c1f22c 100644
--- a/app/javascript/mastodon/features/hashtag_timeline/index.js
+++ b/app/javascript/mastodon/features/hashtag_timeline/index.js
@@ -120,6 +120,7 @@ class HashtagTimeline extends React.PureComponent {
         />
 
         <StatusListContainer
+          trackScroll={!pinned}
           scrollKey={`hashtag_timeline-${columnId}`}
           type='tag'
           id={id}
diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js
index a0a62eaf633757c61ddce81793f5bbdca694e6bd..a8d2133402760e9e97e7c1f91b0d432984fa5855 100644
--- a/app/javascript/mastodon/features/home_timeline/index.js
+++ b/app/javascript/mastodon/features/home_timeline/index.js
@@ -81,6 +81,7 @@ class HomeTimeline extends React.PureComponent {
 
         <StatusListContainer
           {...this.props}
+          trackScroll={!pinned}
           scrollKey={`home_timeline-${columnId}`}
           type='home'
           emptyMessage={emptyMessage}
diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js
index 60d8fff95e0fd2fdf9455e339fd7061ca5baf076..357c80c6616f4c2c1d6e9e450b8622f1464ca6e7 100644
--- a/app/javascript/mastodon/features/notifications/index.js
+++ b/app/javascript/mastodon/features/notifications/index.js
@@ -119,6 +119,7 @@ class Notifications extends React.PureComponent {
     let loadMore       = '';
     let scrollableArea = '';
     let unread         = '';
+    let scrollContainer = '';
 
     if (!isLoading && notifications.size > 0) {
       loadMore = <LoadMore onClick={this.handleLoadMore} />;
@@ -149,6 +150,16 @@ class Notifications extends React.PureComponent {
       );
     }
 
+    if (pinned) {
+      scrollContainer = scrollableArea;
+    } else {
+      scrollContainer = (
+        <ScrollContainer scrollKey={`notifications-${columnId}`} shouldUpdateScroll={shouldUpdateScroll}>
+          {scrollableArea}
+        </ScrollContainer>
+      );
+    }
+
     this.scrollableArea = scrollableArea;
 
     return (
@@ -166,9 +177,7 @@ class Notifications extends React.PureComponent {
           <ColumnSettingsContainer />
         </ColumnHeader>
 
-        <ScrollContainer scrollKey={`notifications-${columnId}`} shouldUpdateScroll={shouldUpdateScroll}>
-          {scrollableArea}
-        </ScrollContainer>
+        {scrollContainer}
       </Column>
     );
   }
diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js
index 001632004a2fa188a42cd3c136b270e5c46c50cc..988e5a059ccd0804cb53b08a6bf0011d00ca770b 100644
--- a/app/javascript/mastodon/features/public_timeline/index.js
+++ b/app/javascript/mastodon/features/public_timeline/index.js
@@ -125,6 +125,7 @@ class PublicTimeline extends React.PureComponent {
         <StatusListContainer
           {...this.props}
           type='public'
+          trackScroll={!pinned}
           scrollKey={`public_timeline-${columnId}`}
           emptyMessage={<FormattedMessage id='empty_column.public' defaultMessage='There is nothing here! Write something publicly, or manually follow users from other instances to fill it up' />}
         />