diff --git a/scim-wnn/src/romkan.cpp b/scim-wnn/src/romkan.cpp
index 0152bfb..513e45a 100644
--- a/scim-wnn/src/romkan.cpp
+++ b/scim-wnn/src/romkan.cpp
@@ -283,4 +283,5 @@
         mode = ROMA;
         return(true);
     }
+    return(false);
 }
diff --git a/scim-wnn/src/scim_wnn_imengine.cpp b/scim-wnn/src/scim_wnn_imengine.cpp
index 20dc1dd..720bff7 100644
--- a/scim-wnn/src/scim_wnn_imengine.cpp
+++ b/scim-wnn/src/scim_wnn_imengine.cpp
@@ -272,7 +272,7 @@
         show_preedit_string();
         update_preedit_string(m_preeditor->getText());
         update_preedit_caret(m_preeditor->getPos());
-    }
+    } else hide_preedit_string();
 }
 
 
@@ -311,13 +311,8 @@
             updatePreEditor();
             return(true);
         } else
-        if (k_backspace.comp(key)) {
-            m_preeditor->backspace();
-            updatePreEditor();
-            return(true);
-        } else
-        if (k_delete.comp(key)) {
-            m_preeditor->del();
+        if ((k_backspace.comp(key)) || (k_delete.comp(key))) {
+            k_backspace.comp(key) ? m_preeditor->backspace(): m_preeditor->del();
             updatePreEditor();
             return(true);
         } else