diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml
index eb3aa6df598a399451610ee7c677f56d035c9226..84f8fd5cf0d3a6da3b182fe82c293352d59cb2d3 100644
--- a/ethereal/assets/qml/wallet.qml
+++ b/ethereal/assets/qml/wallet.qml
@@ -319,7 +319,7 @@ ApplicationWindow {
 
 					Slider {
 						id: logLevelSlider
-						value: eth.getLogLevel()
+						value: eth.getLogLevelInt()
 						anchors {
 							right: parent.right
 							top: parent.top
diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go
index f3a918ea04dc910c9895ac2f35978d9fc49498cd..8845f6af3d54674c729f3fe5dff8adb20c05cc77 100644
--- a/ethereal/ui/gui.go
+++ b/ethereal/ui/gui.go
@@ -90,11 +90,12 @@ func (gui *Gui) Start(assetPath string) {
 
 	var win *qml.Window
 	var err error
+	var addlog = false
 	if len(data) == 0 {
 		win, err = gui.showKeyImport(context)
 	} else {
 		win, err = gui.showWallet(context)
-		ethlog.AddLogSystem(gui)
+		addlog = true
 	}
 	if err != nil {
 		logger.Errorln("asset not found: you can set an alternative asset path on the command line using option 'asset_path'", err)
@@ -105,8 +106,13 @@ func (gui *Gui) Start(assetPath string) {
 	logger.Infoln("Starting GUI")
 
 	win.Show()
+	// only add the gui logger after window is shown otherwise slider wont be shown
+	if addlog {
+		ethlog.AddLogSystem(gui)
+	}
 	win.Wait()
-
+	// need to silence gui logger after window closed otherwise logsystem hangs
+	gui.SetLogLevel(ethlog.Silence)
 	gui.eth.Stop()
 }
 
@@ -353,6 +359,12 @@ func (gui *Gui) GetLogLevel() ethlog.LogLevel {
 	return gui.logLevel
 }
 
+// this extra function needed to give int typecast value to gui widget
+// that sets initial loglevel to default
+func (gui *Gui) GetLogLevelInt() int {
+	return int(gui.logLevel)
+}
+
 func (gui *Gui) Println(v ...interface{}) {
 	gui.printLog(fmt.Sprintln(v...))
 }