diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
index e70c567691a3c66e3ed2e8ae313c9c564a5185f6..1b8296dc4918f09b176d23b428362219956e9474 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
@@ -88,6 +88,8 @@ public class ChatFragment extends BoundFragment {
         messageAdapter = new MessageAdapter(getActivity(), context, new AutoScroller(messages));
         messages.setAdapter(messageAdapter);
 
+        scrollDown.hide();
+
         listener = new RecyclerView.OnScrollListener() {
             @Override
             public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
@@ -106,12 +108,19 @@ public class ChatFragment extends BoundFragment {
                 int scrollOffsetFromBottom = recyclerView.computeVerticalScrollRange() - recyclerView.computeVerticalScrollOffset() - recyclerViewMeasuredHeight;
                 boolean isMoreThanOneScreenFromBottom = scrollOffsetFromBottom > recyclerViewMeasuredHeight;
                 boolean smartVisibility = scrollDown.getVisibility() == View.VISIBLE || isMoreThanOneScreenFromBottom;
-                scrollDown.setVisibility((canScrollDown && isScrollingDown && smartVisibility) ? View.VISIBLE : View.GONE);
+                setScrollDownVisibility(canScrollDown && isScrollingDown && smartVisibility);
+            }
+
+            private void setScrollDownVisibility(boolean visible) {
+                if (visible)
+                    scrollDown.show();
+                else
+                    scrollDown.hide();
             }
         };
         messages.addOnScrollListener(listener);
 
-        scrollDown.setOnClickListener(view1 -> messages.scrollToPosition(0));
+        scrollDown.setOnClickListener(view1 -> messages.smoothScrollToPosition(0));
 
         return view;
     }
diff --git a/app/src/main/java/de/kuschku/util/observables/AutoScroller.java b/app/src/main/java/de/kuschku/util/observables/AutoScroller.java
index f93adf7aafeeafbab30e4d74b6f40a339acf80d6..75db1aaf551021d243fb6126cf2e3a24bf97f024 100644
--- a/app/src/main/java/de/kuschku/util/observables/AutoScroller.java
+++ b/app/src/main/java/de/kuschku/util/observables/AutoScroller.java
@@ -26,20 +26,18 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 
 public class AutoScroller {
-    private final RecyclerView recyclerView;
     private final LinearLayoutManager manager;
 
     public AutoScroller(@NonNull RecyclerView recyclerView) {
-        this(recyclerView, (LinearLayoutManager) recyclerView.getLayoutManager());
+        this((LinearLayoutManager) recyclerView.getLayoutManager());
     }
 
-    public AutoScroller(RecyclerView recyclerView, LinearLayoutManager manager) {
-        this.recyclerView = recyclerView;
+    public AutoScroller(LinearLayoutManager manager) {
         this.manager = manager;
     }
 
     public void notifyScroll() {
         if (manager.findFirstVisibleItemPosition() == 0)
-            manager.smoothScrollToPosition(recyclerView, null, 0);
+            manager.scrollToPosition(0);
     }
 }
diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml
index e1f899f015ca1faae71baf59c167342fa38c037f..40edd43e31a85192991d6da5c738c7f21cc7c98b 100644
--- a/app/src/main/res/layout/fragment_chat.xml
+++ b/app/src/main/res/layout/fragment_chat.xml
@@ -53,7 +53,6 @@
             android:layout_marginEnd="12dp"
             android:layout_marginRight="12dp"
             android:tint="@color/colorFillDark"
-            android:visibility="gone"
             app:backgroundTint="#8A808080"
             app:elevation="0dip"
             app:fabSize="mini"