diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js
index b8aa876b5e181cf9b9934992e67bdd577d17b073..8d6a67131885fae5a2211f4377f66af922a41624 100644
--- a/src/components/settings/settings.js
+++ b/src/components/settings/settings.js
@@ -8,10 +8,9 @@ const settings = {
       hideAttachmentsInConvLocal: this.$store.state.config.hideAttachmentsInConv,
       hideNsfwLocal: this.$store.state.config.hideNsfw,
       muteWordsString: this.$store.state.config.muteWords.join('\n'),
-      previewfile: null,
       autoLoadLocal: this.$store.state.config.autoLoad,
       hoverPreviewLocal: this.$store.state.config.hoverPreview,
-      muteWordsString: this.$store.state.config.muteWords.join('\n')
+      previewfile: null
     }
   },
   components: {
@@ -30,20 +29,29 @@ const settings = {
       reader.onload = ({target}) => {
         const img = target.result
         this.previewfile = img
-        /*this.$store.state.api.backendInteractor.updateAvatar({params: {img}}).then((user) => {
-          if (!user.error) {
-            this.$store.commit('addNewUsers', [user])
-            this.$store.commit('setCurrentUser', user)
-          }
-        })*/
       }
       reader.readAsDataURL(file)
     },
     submitAvatar () {
-      if (!this.previewfile)
-        return
+      if (!this.previewfile) { return }
+
       const img = this.previewfile
-      this.$store.state.api.backendInteractor.updateAvatar({params: {img}}).then((user) => {
+      // eslint-disable-next-line no-undef
+      let imginfo = new Image()
+      let cropX, cropY, cropW, cropH
+      imginfo.src = this.previewfile
+      if (imginfo.height > imginfo.width) {
+        cropX = 0
+        cropW = imginfo.width
+        cropY = Math.floor((imginfo.height - imginfo.width) / 2)
+        cropH = imginfo.width
+      } else {
+        cropY = 0
+        cropH = imginfo.height
+        cropX = Math.floor((imginfo.width - imginfo.height) / 2)
+        cropW = imginfo.height
+      }
+      this.$store.state.api.backendInteractor.updateAvatar({params: {img, cropX, cropY, cropW, cropH}}).then((user) => {
         if (!user.error) {
           this.$store.commit('addNewUsers', [user])
           this.$store.commit('setCurrentUser', user)
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index f2442194e9193ea0f9742887ad331b5384b5f258..1abb1789097bdbb7085fac8c939c12bf24be5c3d 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -13,7 +13,7 @@
         <p>Your current avatar:</p>
         <img :src="user.profile_image_url_original" class="old-avatar"></img>
         <p>Set new avatar:</p>
-        <img class="new-avatar" v-bind:src="previewfile">
+        <img class="new-avatar" v-bind:src="previewfile" v-if="previewfile">
         </img>
         <div>
           <input name="avatar-upload" id="avatar-upload" type="file" @change="uploadAvatar" ></input>
@@ -71,7 +71,9 @@
    }
 
    .new-avatar {
-     max-width: 100%;
+     object-fit: cover;
+     width: 128px;
+     height: 128px;
      border-radius: 5px;
    }
 
@@ -80,21 +82,6 @@
      min-height: 28px;
      width: 10em;
    }
-
-   .cropper {
-     //position: absolute;
-     cursor: move;
-     width: 128px;
-     height: 128px;
-     border:1px solid #fff;
-     background-color: #000000;
-     .sub {
-       width: 100%;
-       height: 100%;
-       margin: -1px -1px -1px -1px ;
-       border:1px dashed #000;
-     }
-   }
  }
  .setting-list {
    list-style-type: none;