diff --git a/share/qtcreator/themes/dark.creatortheme b/share/qtcreator/themes/dark.creatortheme
index 0935680bde876ba369d17375be3fe273515c519e..bc94ac1e19f3166e21cd2c17a268a1d4037ed794 100644
--- a/share/qtcreator/themes/dark.creatortheme
+++ b/share/qtcreator/themes/dark.creatortheme
@@ -78,6 +78,9 @@ IconsCodeModelFunctionColor=ffd34373
 IconsCodeModelVariableColor=ff2bbbcc
 IconsCodeModelEnumColor=ffc0b550
 IconsCodeModelMacroColor=ff477ba0
+IconsCodeModelAttributeColor=ff316511
+IconsCodeModelUniformColor=ff994899
+IconsCodeModelVaryingColor=ffa08833
 IconsCodeModelOverlayBackgroundColor=88000000
 IconsCodeModelOverlayForegroundColor=ffdcdcdc
 InfoBarBackground=ff505000
diff --git a/share/qtcreator/themes/default.creatortheme b/share/qtcreator/themes/default.creatortheme
index 690f4407d7283e59bd34c29a8b4f41c72ed43f8d..b6dcbcca1241bfc96774f17e3899ae66ce683deb 100644
--- a/share/qtcreator/themes/default.creatortheme
+++ b/share/qtcreator/themes/default.creatortheme
@@ -72,6 +72,9 @@ IconsCodeModelFunctionColor=fff36393
 IconsCodeModelVariableColor=ff2bbbcc
 IconsCodeModelEnumColor=ffc0b550
 IconsCodeModelMacroColor=ff476ba0
+IconsCodeModelAttributeColor=ff316511
+IconsCodeModelUniformColor=ff994899
+IconsCodeModelVaryingColor=ffa08833
 IconsCodeModelOverlayBackgroundColor=70ffffff
 IconsCodeModelOverlayForegroundColor=ff232425
 InfoBarBackground=ffffffe1
diff --git a/share/qtcreator/themes/defaultflat.creatortheme b/share/qtcreator/themes/defaultflat.creatortheme
index a3bc13a82041c9adf9bd2709c291b3a7a6bcd4c4..c8d51b6ca7b5ce6f968e198fd59bc0e2d430d24c 100644
--- a/share/qtcreator/themes/defaultflat.creatortheme
+++ b/share/qtcreator/themes/defaultflat.creatortheme
@@ -82,6 +82,9 @@ IconsCodeModelFunctionColor=ffd34373
 IconsCodeModelVariableColor=ff2bbbcc
 IconsCodeModelEnumColor=ffc0b550
 IconsCodeModelMacroColor=ff476ba0
+IconsCodeModelAttributeColor=ff316511
+IconsCodeModelUniformColor=ff994899
+IconsCodeModelVaryingColor=ffa08833
 IconsCodeModelOverlayBackgroundColor=70ffffff
 IconsCodeModelOverlayForegroundColor=ff232425
 InfoBarBackground=ffffffe1
diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h
index 8dd54e5a79cb994d210c11174c5bc0fcb8f05c52..a3a9861d561904adee11e710f0fd575b1025ac1b 100644
--- a/src/libs/utils/theme/theme.h
+++ b/src/libs/utils/theme/theme.h
@@ -160,6 +160,9 @@ public:
         IconsCodeModelVariableColor,
         IconsCodeModelEnumColor,
         IconsCodeModelMacroColor,
+        IconsCodeModelAttributeColor,
+        IconsCodeModelUniformColor,
+        IconsCodeModelVaryingColor,
         IconsCodeModelOverlayBackgroundColor,
         IconsCodeModelOverlayForegroundColor,
 
diff --git a/src/plugins/glsleditor/glslcompletionassist.cpp b/src/plugins/glsleditor/glslcompletionassist.cpp
index e75bfb97a212e9ddb134bd785f0ec2c49a2cdcaa..9be913279e73eb30f6df3a01a49719b2c99382ad 100644
--- a/src/plugins/glsleditor/glslcompletionassist.cpp
+++ b/src/plugins/glsleditor/glslcompletionassist.cpp
@@ -41,7 +41,9 @@
 #include <texteditor/codeassist/genericproposal.h>
 #include <texteditor/codeassist/functionhintproposal.h>
 #include <cplusplus/ExpressionUnderCursor.h>
+#include <cplusplus/Icons.h>
 
+#include <utils/icon.h>
 #include <utils/faketooltip.h>
 
 #include <QIcon>
@@ -138,6 +140,57 @@ static bool checkStartOfIdentifier(const QString &word)
     return false;
 }
 
+enum IconTypes {
+    IconTypeAttribute,
+    IconTypeUniform,
+    IconTypeKeyword,
+    IconTypeVarying,
+    IconTypeConst,
+    IconTypeVariable,
+    IconTypeType,
+    IconTypeFunction,
+    IconTypeOther
+};
+
+static QIcon glslIcon(IconTypes iconType)
+{
+    using namespace CPlusPlus;
+    using namespace Utils;
+
+    const QString member = QLatin1String(":/codemodel/images/member.png");
+
+    switch (iconType) {
+    case IconTypeType:
+        return Icons::iconForType(Icons::ClassIconType);
+    case IconTypeConst:
+        return Icons::iconForType(Icons::EnumeratorIconType);
+    case IconTypeKeyword:
+        return Icons::iconForType(Icons::KeywordIconType);
+    case IconTypeFunction:
+        return Icons::iconForType(Icons::FuncPublicIconType);
+    case IconTypeVariable:
+        return Icons::iconForType(Icons::VarPublicIconType);
+    case IconTypeAttribute: {
+        static const QIcon icon =
+                Icon({{member, Theme::IconsCodeModelAttributeColor}}, Icon::Tint).icon();
+        return icon;
+    }
+    case IconTypeUniform: {
+        static const QIcon icon =
+                Icon({{member, Theme::IconsCodeModelUniformColor}}, Icon::Tint).icon();
+        return icon;
+    }
+    case IconTypeVarying: {
+        static const QIcon icon =
+                Icon({{member, Theme::IconsCodeModelVaryingColor}}, Icon::Tint).icon();
+        return icon;
+    }
+    case IconTypeOther:
+    default:
+        return Icons::iconForType(Icons::NamespaceIconType);
+    }
+}
+
 // ----------------------------
 // GlslCompletionAssistProvider
 // ----------------------------
@@ -223,15 +276,6 @@ int GlslFunctionHintProposalModel::activeArgument(const QString &prefix) const
 // -----------------------------
 GlslCompletionAssistProcessor::GlslCompletionAssistProcessor()
     : m_startPosition(0)
-    , m_keywordIcon(QLatin1String(":/glsleditor/images/keyword.png"))
-    , m_varIcon(QLatin1String(":/glsleditor/images/var.png"))
-    , m_functionIcon(QLatin1String(":/glsleditor/images/func.png"))
-    , m_typeIcon(QLatin1String(":/glsleditor/images/type.png"))
-    , m_constIcon(QLatin1String(":/glsleditor/images/const.png"))
-    , m_attributeIcon(QLatin1String(":/glsleditor/images/attribute.png"))
-    , m_uniformIcon(QLatin1String(":/glsleditor/images/uniform.png"))
-    , m_varyingIcon(QLatin1String(":/glsleditor/images/varying.png"))
-    , m_otherIcon(QLatin1String(":/glsleditor/images/other.png"))
 {}
 
 GlslCompletionAssistProcessor::~GlslCompletionAssistProcessor()
@@ -385,9 +429,9 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
                     0
                 };
                 for (int index = 0; attributeNames[index]; ++index)
-                    m_completions << createCompletionItem(QString::fromLatin1(attributeNames[index]), m_attributeIcon);
+                    m_completions << createCompletionItem(QString::fromLatin1(attributeNames[index]), glslIcon(IconTypeAttribute));
                 for (int index = 0; uniformNames[index]; ++index)
-                    m_completions << createCompletionItem(QString::fromLatin1(uniformNames[index]), m_uniformIcon);
+                    m_completions << createCompletionItem(QString::fromLatin1(uniformNames[index]), glslIcon(IconTypeUniform));
             }
         }
 
@@ -395,7 +439,7 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
             QStringList keywords = GLSL::Lexer::keywords(languageVariant(m_interface->mimeType()));
 //            m_keywordCompletions.clear();
             for (int index = 0; index < keywords.size(); ++index)
-                m_completions << createCompletionItem(keywords.at(index), m_keywordIcon);
+                m_completions << createCompletionItem(keywords.at(index), glslIcon(IconTypeKeyword));
 //            m_keywordVariant = languageVariant(m_interface->mimeType());
 //        }
 
@@ -408,23 +452,23 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
         if (var) {
             int storageType = var->qualifiers() & GLSL::QualifiedTypeAST::StorageMask;
             if (storageType == GLSL::QualifiedTypeAST::Attribute)
-                icon = m_attributeIcon;
+                icon = glslIcon(IconTypeAttribute);
             else if (storageType == GLSL::QualifiedTypeAST::Uniform)
-                icon = m_uniformIcon;
+                icon = glslIcon(IconTypeUniform);
             else if (storageType == GLSL::QualifiedTypeAST::Varying)
-                icon = m_varyingIcon;
+                icon = glslIcon(IconTypeVarying);
             else if (storageType == GLSL::QualifiedTypeAST::Const)
-                icon = m_constIcon;
+                icon = glslIcon(IconTypeConst);
             else
-                icon = m_varIcon;
+                icon = glslIcon(IconTypeVariable);
         } else if (s->asArgument()) {
-            icon = m_varIcon;
+            icon = glslIcon(IconTypeVariable);
         } else if (s->asFunction() || s->asOverloadSet()) {
-            icon = m_functionIcon;
+            icon = glslIcon(IconTypeFunction);
         } else if (s->asStruct()) {
-            icon = m_typeIcon;
+            icon = glslIcon(IconTypeType);
         } else {
-            icon = m_otherIcon;
+            icon = glslIcon(IconTypeOther);
         }
         if (specialMembers.contains(s->name()))
             m_completions << createCompletionItem(s->name(), icon, SpecialMemberOrder);
diff --git a/src/plugins/glsleditor/glslcompletionassist.h b/src/plugins/glsleditor/glslcompletionassist.h
index 8cc29e6c772436b5e8dc154b5fdbdb8a501ab820..ca1bd84a4410dfc95918649e68967ea0f8082768 100644
--- a/src/plugins/glsleditor/glslcompletionassist.h
+++ b/src/plugins/glsleditor/glslcompletionassist.h
@@ -34,7 +34,6 @@
 #include <texteditor/codeassist/ifunctionhintproposalmodel.h>
 
 
-#include <QIcon>
 #include <QScopedPointer>
 #include <QSharedPointer>
 
@@ -107,16 +106,6 @@ private:
 
     int m_startPosition;
     QScopedPointer<const GlslCompletionAssistInterface> m_interface;
-
-    QIcon m_keywordIcon;
-    QIcon m_varIcon;
-    QIcon m_functionIcon;
-    QIcon m_typeIcon;
-    QIcon m_constIcon;
-    QIcon m_attributeIcon;
-    QIcon m_uniformIcon;
-    QIcon m_varyingIcon;
-    QIcon m_otherIcon;
 };
 
 class GlslCompletionAssistInterface : public TextEditor::AssistInterface
diff --git a/src/plugins/glsleditor/glsleditor.qrc b/src/plugins/glsleditor/glsleditor.qrc
index 3455048e006772ad7c05992bc870749bf6e6cf36..cb1c737c9a1602fc40b70e4f5267b8275765b559 100644
--- a/src/plugins/glsleditor/glsleditor.qrc
+++ b/src/plugins/glsleditor/glsleditor.qrc
@@ -2,14 +2,5 @@
     <qresource prefix="/glsleditor">
         <file>GLSLEditor.mimetypes.xml</file>
         <file>images/glslfile.png</file>
-        <file>images/keyword.png</file>
-        <file>images/var.png</file>
-        <file>images/func.png</file>
-        <file>images/type.png</file>
-        <file>images/const.png</file>
-        <file>images/attribute.png</file>
-        <file>images/uniform.png</file>
-        <file>images/varying.png</file>
-        <file>images/other.png</file>
     </qresource>
 </RCC>
diff --git a/src/plugins/glsleditor/images/attribute.png b/src/plugins/glsleditor/images/attribute.png
deleted file mode 100644
index fe2bdc36fddf0d90445e2e8031bf0f08bda4eaaa..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/attribute.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/const.png b/src/plugins/glsleditor/images/const.png
deleted file mode 100644
index 25fc49c6598a8a99c11ec688b4dc1d3153427507..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/const.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/func.png b/src/plugins/glsleditor/images/func.png
deleted file mode 100644
index e515e76e61f64cd285a4c67aaf1feaca38e84f8b..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/func.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/keyword.png b/src/plugins/glsleditor/images/keyword.png
deleted file mode 100644
index e5a51858d9ed96ab65bf6544891cb48730607fa4..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/keyword.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/other.png b/src/plugins/glsleditor/images/other.png
deleted file mode 100644
index 18d2941572e8a62e65954c4900aa9b1bdf21766f..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/other.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/type.png b/src/plugins/glsleditor/images/type.png
deleted file mode 100644
index 88432d2cb10c43de91fdb7ec7989285090747b0a..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/type.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/uniform.png b/src/plugins/glsleditor/images/uniform.png
deleted file mode 100644
index 075e875dd217093d383b0346a2c3919f59e3103f..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/uniform.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/var.png b/src/plugins/glsleditor/images/var.png
deleted file mode 100644
index 089cfb45e5fc0f9629c508538ffc5886f79f84c1..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/var.png and /dev/null differ
diff --git a/src/plugins/glsleditor/images/varying.png b/src/plugins/glsleditor/images/varying.png
deleted file mode 100644
index a6e3e12c6d55b7f951598ae2e5d3961a3b994ee7..0000000000000000000000000000000000000000
Binary files a/src/plugins/glsleditor/images/varying.png and /dev/null differ