diff --git a/Base/Types/VectorWC.h b/Base/Types/VectorWC.h
index c193c1cca3eeeb66aca924e0d9b53c9fc768eafd..fb2e29295864814bbfd1358e1e510321430a5345 100644
--- a/Base/Types/VectorWC.h
+++ b/Base/Types/VectorWC.h
@@ -52,6 +52,12 @@ public:
         super::delete_at(i);
         update_current();
     }
+    void delete_current()
+    {
+	ASSERT(m_current_index != size_t(-1));
+	super::delete_at(m_current_index);
+	update_current();
+    }
     T* release_at(size_t i)
     {
         super::release_at(i);
diff --git a/GUI/View/List/InstrumentsQModel.cpp b/GUI/View/List/InstrumentsQModel.cpp
index 97dd95225b73d0a51d7ccdb0bb02cc6d7e375340..ee37de0a2fcd3e8d3e876375e9d90522df6da79a 100644
--- a/GUI/View/List/InstrumentsQModel.cpp
+++ b/GUI/View/List/InstrumentsQModel.cpp
@@ -58,11 +58,10 @@ QVariant InstrumentsQModel::data(const QModelIndex& index, int role) const
 
 void InstrumentsQModel::removeInstrument()
 {
-    const InstrumentItem* t = set()->currentItem();
-
-    const int row = set()->index_of(t);
+    const size_t row = set()->currentIndex();
+    ASSERT(row != size_t(-1));
     beginRemoveRows({}, row, row);
-    set()->delete_element(t);
+    set()->delete_current();
     endRemoveRows();
 
     emit set()->setChanged();
@@ -78,7 +77,7 @@ QModelIndex InstrumentsQModel::copyInstrument()
 
 QModelIndex InstrumentsQModel::pushInstrument(InstrumentItem* t)
 {
-    const int row = set()->instrumentItems().size();
+    const size_t row = set()->size();
     beginInsertRows({}, row, row);
     set()->push_back(t);
     endInsertRows();