diff --git a/Fltk/contextWindow.cpp b/Fltk/contextWindow.cpp
index 846c574b2f8752ce0e3e9ec0fb33a54ceddc510b..bebdccf86e44678da936c7728518890c4a1dc5d1 100644
--- a/Fltk/contextWindow.cpp
+++ b/Fltk/contextWindow.cpp
@@ -656,6 +656,7 @@ static void selection_mode_cb(Fl_Widget *w, void *data)
   for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
     for(unsigned int j = 0; j < FlGui::instance()->graph[i]->gl.size(); j++)
       FlGui::instance()->graph[i]->gl[j]->changeSelection = mode;
+  drawContext::global()->draw();
 }
 
 transformContextWindow::transformContextWindow(int deltaFontSize)
diff --git a/Fltk/graphicWindow.cpp b/Fltk/graphicWindow.cpp
index aa5b3d4a5e28f84838bee2733cf37f51a262ad6e..71e3295f0372cbce6b3296d48c3d61a2996b53c8 100644
--- a/Fltk/graphicWindow.cpp
+++ b/Fltk/graphicWindow.cpp
@@ -1565,7 +1565,15 @@ static void geometry_elementary_boolean_cb(Fl_Widget *w, void *data)
                     "[Press 'e' to end selection, 'u' to undo last selection or "
                     "'q' to abort]");
 
-    char ib = FlGui::instance()->selectEntity(ENT_ALL);
+    int type = ENT_ALL;
+    switch(FlGui::instance()->transformContext->choice->value()){
+    case 1: type = ENT_POINT; break;
+    case 2: type = ENT_LINE; break;
+    case 3: type = ENT_SURFACE; break;
+    case 4: type = ENT_VOLUME; break;
+    }
+
+    char ib = FlGui::instance()->selectEntity(type);
     if(ib == 'l') {
       for(unsigned int i = 0; i < FlGui::instance()->selectedEdges.size(); i++){
         if(FlGui::instance()->selectedEdges[i]->getSelection() != 1){