diff --git a/modules/gui/share/icons/delete_icon.png b/modules/gui/share/icons/delete_icon.png
index 07b57dcd7f83d499301f1f778330591ce16dee3d..998b49070fc98a0a67dc79392eebb879a9af7937 100644
Binary files a/modules/gui/share/icons/delete_icon.png and b/modules/gui/share/icons/delete_icon.png differ
diff --git a/modules/gui/src/info_widget/info_widget.cc b/modules/gui/src/info_widget/info_widget.cc
index fd582d46b75c9b64e0be64948b60b53342aa2b9e..4eeaa552a049cce655331d1c40bad27cd6d6b65e 100644
--- a/modules/gui/src/info_widget/info_widget.cc
+++ b/modules/gui/src/info_widget/info_widget.cc
@@ -19,9 +19,10 @@
 /*
  Author: Stefan Scheuber
  */
+#include <QApplication>
 #include <QDir>
+#include <QMenu>
 #include <QVBoxLayout>
-#include <QApplication>
 
 #include <ost/platform.hh>
 
@@ -30,7 +31,8 @@
 
 #include "info_widget.hh"
 
-namespace ost { namespace gui {
+namespace ost {
+namespace gui {
 
 class InfoWidgetFactory: public WidgetFactory {
 public:
@@ -45,7 +47,9 @@ public:
 
 OST_REGISTER_WIDGET(InfoWidget, InfoWidgetFactory);
 
-InfoWidget::InfoWidget(QWidget* parent) : Widget(NULL, parent), model_(new QStandardItemModel(this)), view_(new QListView(this)) {
+InfoWidget::InfoWidget(QWidget* parent) :
+  Widget(NULL, parent), model_(new QStandardItemModel(this)), view_(
+      new QListView(this)) {
   QVBoxLayout* layout = new QVBoxLayout(this);
   layout->setMargin(0);
   layout->setSpacing(0);
@@ -54,9 +58,12 @@ InfoWidget::InfoWidget(QWidget* parent) : Widget(NULL, parent), model_(new QStan
   view_->setModel(model_);
   view_->setSelectionBehavior(QAbstractItemView::SelectRows);
   view_->setDragEnabled(true);
+  view_->setContextMenuPolicy(Qt::CustomContextMenu);
 
   layout->addWidget(view_);
 
+  connect(view_, SIGNAL(customContextMenuRequested(const QPoint&)), this,
+      SLOT(ContextMenuRequested(const QPoint&)));
 
   QDir icon_path(GetSharedDataPath().c_str());
   icon_path.cd("gui");
@@ -64,8 +71,9 @@ InfoWidget::InfoWidget(QWidget* parent) : Widget(NULL, parent), model_(new QStan
 
   QAction* clear_action = new QAction(this);
   clear_action->setToolTip("Clear info panel");
-  clear_action->setIcon(QIcon(icon_path.absolutePath()+QDir::separator()+QString("delete_icon.png")));
-  connect(clear_action,SIGNAL(triggered(bool)), this, SLOT(Clear()));
+  clear_action->setIcon(QIcon(icon_path.absolutePath() + QDir::separator()
+      + QString("delete_icon.png")));
+  connect(clear_action, SIGNAL(triggered(bool)), this, SLOT(Clear()));
   this->actions_.append(clear_action);
 }
 
@@ -73,67 +81,80 @@ void InfoWidget::Update() {
   view_->viewport()->update();
 }
 
-void InfoWidget::LogMessage(const QString& message, QMessageBox::Icon icon){
-  QPixmap pix_icon = this->GetIcon(icon,this);
+void InfoWidget::LogMessage(const QString& message, QMessageBox::Icon icon) {
+  QPixmap pix_icon = this->GetIcon(icon, this);
   QStandardItem* item = new QStandardItem();
   item->setText(message);
   item->setIcon(QIcon(pix_icon));
   this->model_->appendRow(item);
 }
 
-void InfoWidget::LogMessage(QStandardItem* item){
+void InfoWidget::LogMessage(QStandardItem* item) {
   this->model_->appendRow(item);
 }
 
-void InfoWidget::LogMessage(const QString& message, QIcon icon){
+void InfoWidget::LogMessage(const QString& message, QIcon icon) {
   QStandardItem* item = new QStandardItem();
   item->setText(message);
   item->setIcon(icon);
   this->model_->appendRow(item);
 }
 
-QPixmap InfoWidget::GetIcon(QMessageBox::Icon icon, QWidget* widget)
-{
-    QStyle *style = widget ? widget->style() : QApplication::style();
-    int icon_size = style->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, widget);
-    QIcon tmp_icon;
-    switch (icon) {
-    case QMessageBox::Information:
-        tmp_icon = style->standardIcon(QStyle::SP_MessageBoxInformation, 0, widget);
-        break;
-    case QMessageBox::Warning:
-        tmp_icon = style->standardIcon(QStyle::SP_MessageBoxWarning, 0, widget);
-        break;
-    case QMessageBox::Critical:
-        tmp_icon = style->standardIcon(QStyle::SP_MessageBoxCritical, 0, widget);
-        break;
-    case QMessageBox::Question:
-        tmp_icon = style->standardIcon(QStyle::SP_MessageBoxQuestion, 0, widget);
-    default:
-        break;
-    }
-    if (!tmp_icon.isNull())
-        return tmp_icon.pixmap(icon_size, icon_size);
-    return QPixmap();
+QPixmap InfoWidget::GetIcon(QMessageBox::Icon icon, QWidget* widget) {
+  QStyle *style = widget ? widget->style() : QApplication::style();
+  int icon_size = style->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, widget);
+  QIcon tmp_icon;
+  switch (icon) {
+  case QMessageBox::Information:
+    tmp_icon = style->standardIcon(QStyle::SP_MessageBoxInformation, 0, widget);
+    break;
+  case QMessageBox::Warning:
+    tmp_icon = style->standardIcon(QStyle::SP_MessageBoxWarning, 0, widget);
+    break;
+  case QMessageBox::Critical:
+    tmp_icon = style->standardIcon(QStyle::SP_MessageBoxCritical, 0, widget);
+    break;
+  case QMessageBox::Question:
+    tmp_icon = style->standardIcon(QStyle::SP_MessageBoxQuestion, 0, widget);
+  default:
+    break;
+  }
+  if (!tmp_icon.isNull())
+    return tmp_icon.pixmap(icon_size, icon_size);
+  return QPixmap();
 }
 
-void InfoWidget::Clear(){
+void InfoWidget::Clear() {
   this->model_->clear();
 }
 
-void InfoWidget::RemoveSelected(){
+void InfoWidget::RemoveSelected() {
   QItemSelectionModel* selection_model = this->view_->selectionModel();
-  const QItemSelection& item_selection =  selection_model->selection();
+  const QItemSelection& item_selection = selection_model->selection();
   const QModelIndexList& model_indexes = item_selection.indexes();
-  for(int i=0;i<model_indexes.size();i++){
+  for (int i = 0; i < model_indexes.size(); i++) {
     this->model_->removeRow(model_indexes[i].row());
   }
 }
 
-ActionList InfoWidget::GetActions(){
+ActionList InfoWidget::GetActions() {
   return this->actions_;
 }
 
+void InfoWidget::ContextMenuRequested(const QPoint& pos) {
+
+  QAction* remove_selected_action = new QAction("Remove", this);
+  remove_selected_action->setToolTip("Remove this item");
+  connect(remove_selected_action, SIGNAL(triggered(bool)), this,
+      SLOT(RemoveSelected()));
+
+  QMenu* menu = new QMenu();
+  menu->addAction(remove_selected_action);
+  if (menu->actions().size() > 0) {
+    menu->popup(view_->viewport()->mapToGlobal(pos));
+  }
+}
+
 InfoWidget::~InfoWidget() {
 }
 
diff --git a/modules/gui/src/info_widget/info_widget.hh b/modules/gui/src/info_widget/info_widget.hh
index d74ceaa6591fb139d3849248d44bf7eea499c4a5..65857d37ddff2521cfff4049fef6500a9508ebea 100644
--- a/modules/gui/src/info_widget/info_widget.hh
+++ b/modules/gui/src/info_widget/info_widget.hh
@@ -59,6 +59,9 @@ public slots:
   void RemoveSelected();
   void Update();
 
+private slots:
+  void ContextMenuRequested(const QPoint& pos);
+
 private:
   QPixmap GetIcon(QMessageBox::Icon icon, QWidget* widget);