diff --git a/qualitydialog.cpp b/qualitydialog.cpp
index 44ea91f..7859fe3 100644
--- a/qualitydialog.cpp
+++ b/qualitydialog.cpp
@@ -20,24 +20,42 @@
 #include "qualitydialog.h"
 #include "ui_qualitydialog.h"
 
+#include <QSortFilterProxyModel>
+#include <QBitmap>
+#include <QPropertyAnimation>
+#include <QGraphicsOpacityEffect>
+
 #include "callmodel.h"
 #include "account.h"
 #include "codecmodel.h"
 
-#include <QSortFilterProxyModel>
-
 QualityDialog::QualityDialog(QWidget *parent) :
     QDialog(parent),
-    ui(new Ui::QualityDialog)
+    ui(new Ui::QualityDialog),
+    spikeMask_(new QPixmap(":/images/spikeMask.png"))
 {
     ui->setupUi(this);
 
     this->setWindowFlags(Qt::CustomizeWindowHint);
-    this->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);
+    this->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup | Qt::NoDropShadowWindowHint);
+
+    ui->spike->setMask(spikeMask_->mask());
+
+    effect_ = new QGraphicsOpacityEffect(this);
+    effect_->setOpacity(1.0);
+    setGraphicsEffect(effect_);
+    fadeAnim_ = new QPropertyAnimation(effect_, "opacity");
+    fadeAnim_->setDuration(fadeOverlayTime_);
+    fadeAnim_->setStartValue(0.0);
+    fadeAnim_->setEndValue(1.0);
+    fadeAnim_->setEasingCurve(QEasingCurve::InExpo);
 }
 
 QualityDialog::~QualityDialog()
 {
+    delete effect_;
+    delete spikeMask_;
+    delete fadeAnim_;
     delete ui;
 }
 
@@ -75,6 +93,18 @@
         }
     }
     ui->autoCheckBox->blockSignals(false);
+
+    emit(isVisible(true));
+
+    fadeAnim_->setDirection(QAbstractAnimation::Forward);
+    fadeAnim_->start();
+}
+
+void
+QualityDialog::closeEvent(QCloseEvent* event)
+{
+    Q_UNUSED(event)
+    emit(isVisible(false));
 }
 
 void
