diff --git a/Base/Types/OwningVector.h b/Base/Types/OwningVector.h
index 199fd73a1023eebba99fd26b83aa227962a205cf..9465702e572fb87c15bce5cfedf23cd6e1718e43 100644
--- a/Base/Types/OwningVector.h
+++ b/Base/Types/OwningVector.h
@@ -56,10 +56,16 @@ public:
 
     size_t size() const { return m_v.size(); }
     bool empty() const { return m_v.empty(); }
-    T* const& operator[](int i) const { return m_v.operator[](i); }
-    T* const& at(int i) const { return m_v.at(i); }
-    T* const& front() const { return m_v.front(); }
-    T* const& back() const { return m_v.back(); }
+
+    const T* operator[](int i) const { return m_v.operator[](i); }
+    T* operator[](int i) { return m_v.operator[](i); }
+    const T* at(int i) const { return m_v.at(i); }
+    T* at(int i) { return m_v.at(i); }
+    const T* front() const { return m_v.front(); }
+    T* front() { return m_v.front(); }
+    const T* back() const { return m_v.back(); }
+    T* back() { return m_v.back(); }
+
     int index_of(const T* t) const { return Vec::indexOfPtr(t, m_v); }
 
     void delete_element(T* e)
diff --git a/Device/Mask/MaskStack.cpp b/Device/Mask/MaskStack.cpp
index 22f67ce3a9f63db0ae23554b0e7436fff1a52a49..42aab5e59ee181f7ab19160dbe33acde3de6084c 100644
--- a/Device/Mask/MaskStack.cpp
+++ b/Device/Mask/MaskStack.cpp
@@ -83,6 +83,6 @@ size_t MaskStack::numberOfMasks() const
 
 std::pair<IShape2D*, bool> MaskStack::patternAt(size_t iMask) const
 {
-    MaskPattern* pat = m_stack.at(iMask);
+    const MaskPattern* pat = m_stack.at(iMask);
     return {pat->shape, pat->doMask};
 }