diff --git a/opentech/apply/funds/forms.py b/opentech/apply/funds/forms.py
index 8c51547999823658ff3b4ec665c765c19c5976a9..a53561320d50bea70aad0e6ec8090052cc909d3e 100644
--- a/opentech/apply/funds/forms.py
+++ b/opentech/apply/funds/forms.py
@@ -1,11 +1,13 @@
 from django import forms
-from django.utils.text import slugify
+from django.utils.text import mark_safe, slugify
 from django.utils.translation import ugettext_lazy as _
+from django_select2.forms import Select2Widget
 
 from opentech.apply.users.models import User
+from opentech.apply.utils.image import generate_image_url
 
 from .models import ApplicationSubmission, AssignedReviewers, ReviewerRole
-from .widgets import Select2MultiCheckboxesWidget, Select2IconWidget
+from .widgets import Select2MultiCheckboxesWidget
 from .workflow import get_action_mapping
 
 
@@ -107,11 +109,11 @@ class UpdateReviewersForm(forms.ModelForm):
 
             self.fields[field_name] = forms.ModelChoiceField(
                 queryset=staff_reviewers,
-                widget=Select2IconWidget(attrs={
-                    'data-placeholder': 'Select a reviewer', 'icon': role.icon
+                widget=Select2Widget(attrs={
+                    'data-placeholder': 'Select a reviewer',
                 }),
                 required=False,
-                label=f'{role.name} Reviewer',
+                label=mark_safe(self.render_icon(role.icon) + f'{role.name} Reviewer'),
             )
             # Pre-populate form field
             self.fields[field_name].initial = assigned_roles.get(role)
@@ -134,6 +136,12 @@ class UpdateReviewersForm(forms.ModelForm):
         else:
             self.fields.pop('reviewer_reviewers')
 
+    def render_icon(self, image):
+        if not image:
+            return ''
+        filter_spec = 'fill-20x20'
+        return generate_image_url(image, filter_spec)
+
     def prepare_field(self, field_name, initial, excluded):
         field = self.fields[field_name]
         field.queryset = field.queryset.exclude(id__in=excluded)
diff --git a/opentech/apply/funds/tables.py b/opentech/apply/funds/tables.py
index 198373c993c2a89ee1e841ea721bfce45670887c..86cebfc3514e86d73c3e3df8f45c5cdbc5b4e049 100644
--- a/opentech/apply/funds/tables.py
+++ b/opentech/apply/funds/tables.py
@@ -17,6 +17,7 @@ from wagtail.core.models import Page
 from opentech.apply.funds.models import ApplicationSubmission, Round, ScreeningStatus
 from opentech.apply.funds.workflow import STATUSES
 from opentech.apply.users.groups import STAFF_GROUP_NAME
+from opentech.apply.utils.image import generate_image_url
 from .widgets import Select2MultiCheckboxesWidget
 
 
@@ -131,18 +132,11 @@ class SummarySubmissionsTableWithRole(BaseAdminSubmissionsTable):
         orderable = False
 
     def render_role_icon(self, value):
-        from django.urls import reverse
-        from wagtail.images.views.serve import generate_signature
-        from opentech.images.models import CustomImage
-
         if value:
             image = CustomImage.objects.filter(id=value).first()
             if image:
                 filter_spec = 'fill-20x20'
-                signature = generate_signature(image.id, filter_spec)
-                url = reverse('wagtailimages_serve', args=(signature, image.id, filter_spec))
-                url += image.file.name[len('original_images/'):]
-                return format_html(f'<img alt="{image.title}" height="20" width="20" src="{url}">')
+                return generate_image_url(image, filter_spec)
 
         return ''
 
diff --git a/opentech/apply/funds/widgets.py b/opentech/apply/funds/widgets.py
index dbaf8ba228462006ed3bfa4080dfa8d9a69b03e9..d7ac9d879f2ea91801d78b718bd2e9874071f787 100644
--- a/opentech/apply/funds/widgets.py
+++ b/opentech/apply/funds/widgets.py
@@ -1,6 +1,6 @@
 from django.contrib.staticfiles.templatetags.staticfiles import static
 
-from django_select2.forms import Select2Widget, Select2MultipleWidget
+from django_select2.forms import Select2MultipleWidget
 
 
 class Select2MultiCheckboxesWidget(Select2MultipleWidget):
@@ -20,13 +20,3 @@ class Select2MultiCheckboxesWidget(Select2MultipleWidget):
         attrs = super().build_attrs(*args, **kwargs)
         attrs['class'] = attrs['class'].replace('django-select2', 'django-select2-checkboxes')
         return attrs
-
-
-class Select2IconWidget(Select2Widget):
-    template_name = 'funds/widgets/icon_select2.html'
-
-    def __init__(self, *args, **kwargs):
-        attrs = kwargs.get('attrs', {})
-        attrs.setdefault('icon', '')
-        kwargs['attrs'] = attrs
-        super().__init__(*args, **kwargs)
diff --git a/opentech/apply/utils/image.py b/opentech/apply/utils/image.py
new file mode 100644
index 0000000000000000000000000000000000000000..f76e8c36ac730c32dc0d4d056f67562e416ab1c4
--- /dev/null
+++ b/opentech/apply/utils/image.py
@@ -0,0 +1,11 @@
+from django.urls import reverse
+from django.utils.html import format_html
+
+from wagtail.images.views.serve import generate_signature
+
+
+def generate_image_url(image, filter_spec):
+    signature = generate_signature(image.id, filter_spec)
+    url = reverse('wagtailimages_serve', args=(signature, image.id, filter_spec))
+    url += image.file.name[len('original_images/'):]
+    return format_html(f'<img alt="{image.title}" src="{url}">')