diff --git a/generator/static/images/badges/Olomouc-kandidat-dark.png b/generator/static/images/badges/Olomouc-kandidat-dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..88f36721ef8058b277076602387ba730b64985f1
Binary files /dev/null and b/generator/static/images/badges/Olomouc-kandidat-dark.png differ
diff --git a/generator/static/images/badges/Olomouc-kandidat-light.png b/generator/static/images/badges/Olomouc-kandidat-light.png
new file mode 100644
index 0000000000000000000000000000000000000000..88f36721ef8058b277076602387ba730b64985f1
Binary files /dev/null and b/generator/static/images/badges/Olomouc-kandidat-light.png differ
diff --git a/generator/static/images/badges/Olomouc-volim-dark.png b/generator/static/images/badges/Olomouc-volim-dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b179169a26f0ec52b6cb75914a4381642f1dfbe
Binary files /dev/null and b/generator/static/images/badges/Olomouc-volim-dark.png differ
diff --git a/generator/static/images/badges/Olomouc-volim-light.png b/generator/static/images/badges/Olomouc-volim-light.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b179169a26f0ec52b6cb75914a4381642f1dfbe
Binary files /dev/null and b/generator/static/images/badges/Olomouc-volim-light.png differ
diff --git a/generator/static/js/avatar/external_ui.js b/generator/static/js/avatar/external_ui.js
index ad23df891a9f617438ef179bb3584b0eafbb4ecf..95578a13038ae3272407b4ccc2b5610a0c1a4686 100644
--- a/generator/static/js/avatar/external_ui.js
+++ b/generator/static/js/avatar/external_ui.js
@@ -171,6 +171,8 @@ $(window).ready(
 			}
 		);
 		
+		console.log(template);
+		
 		// Load template
 		template = new AvatarTemplate("avatar-canvas");
 		
@@ -183,8 +185,6 @@ $(window).ready(
 			$("#image-controls").css("display", "none");
 		}
 		
-		init();
-		
-		template.redrawCanvas();
+		await init();
 	}
 );
diff --git a/generator/static/js/avatar/internal_ui.js b/generator/static/js/avatar/internal_ui.js
index e27b3fccea59c1be2c2275e1e0405190bc35846b..41b0c04f377d7a6def07bd7057b5168e77195309 100644
--- a/generator/static/js/avatar/internal_ui.js
+++ b/generator/static/js/avatar/internal_ui.js
@@ -542,7 +542,7 @@ $("#image").on(
 );
 
 
-$("#image").on(
+$("#reset-image").on(
 	"click",
 	function(event) {
 		template.resetImage();
diff --git a/generator/static/js/avatar/template.js b/generator/static/js/avatar/template.js
index 38cbb5c935a41b6f14110bc649f5e0de19a98ea5..54e9efd13a5afd77c1b349eab6c3b867d2f3c271 100644
--- a/generator/static/js/avatar/template.js
+++ b/generator/static/js/avatar/template.js
@@ -375,6 +375,30 @@ class AvatarTemplate {
 			}
 		}
 		
+		if (
+			this.darkIconDefaultSource.endsWith("Olomouc-kandidat.png") ||
+			this.darkIconDefaultSource.endsWith("Olomouc-volim.png")
+		) {
+			this.context.globalCompositeOperation = "destination-in";
+			
+			this.context.beginPath();
+			
+			this.context.arc(
+				this.canvas.width / 2,
+				this.canvas.height / 2,
+				this.canvas.width / 2,
+				0,
+				2 * Math.PI,
+				false
+			);
+			
+			this.context.fill();
+			
+			this.context.closePath();
+			
+			this.context.globalCompositeOperation = "source-over";
+		}
+		
 		this.redrawing = false;
 	}
 	
diff --git a/generator/templates/avatar_internal.html b/generator/templates/avatar_internal.html
index 3e3074905edb8ab3991676d2696bb03643f0a429..941df7ddc43f935f12ec22e08afb542db5af7b8f 100644
--- a/generator/templates/avatar_internal.html
+++ b/generator/templates/avatar_internal.html
@@ -523,6 +523,23 @@
 							value="olomouc"
 						>Olomouc</option>
 						
+						<option
+							data-image-source="{{ url_for('static', filename='images/badges/Olomouc-kandidat-dark.png') }}"
+							data-icon-dark-source="{{ url_for('static', filename='images/badges/Olomouc-kandidat-dark.png') }}"
+							data-icon-light-source="{{ url_for('static', filename='images/badges/Olomouc-kandidat-light.png') }}"
+							data-special-number-function="olomouc-kandidat"
+							data-url="{{ url_for('generator.view_avatar_generator_with_localization', icon_localization='olomouc-kandidat', _external=true) }}"
+							value="olomouc-kandidat"
+						>Olomouc - kandidát</option>
+						<option
+							data-image-source="{{ url_for('static', filename='images/badges/Olomouc-volim-dark.png') }}"
+							data-icon-dark-source="{{ url_for('static', filename='images/badges/Olomouc-volim-dark.png') }}"
+							data-icon-light-source="{{ url_for('static', filename='images/badges/Olomouc-volim-light.png') }}"
+							data-special-number-function="olomouc-volim"
+							data-url="{{ url_for('generator.view_avatar_generator_with_localization', icon_localization='olomouc-volim', _external=true) }}"
+							value="olomouc-volim"
+						>Olomouc - volím</option>
+						
 						<option
 							data-image-source="{{ url_for('static', filename='images/badges/Opava-dark.png') }}"
 							data-icon-dark-source="{{ url_for('static', filename='images/badges/Opava-dark.png') }}"
diff --git a/generator/templates/avatar_public.html b/generator/templates/avatar_public.html
index 21002e4aef78efd91f3b78af8a0c564a24b32758..a21533cb3cb2373d110341be1796edafdd93058f 100644
--- a/generator/templates/avatar_public.html
+++ b/generator/templates/avatar_public.html
@@ -122,8 +122,8 @@
 		</footer>
 		
 		<script type="text/javascript">
-			function init() {
-				template.setColorScheme("{% if dark %}white-on-black{% else %}black-on-white{% endif %}");
+			async function init() {
+				template.setColorScheme("{% if dark %}white-on-black{% else %}black-on-white{% endif %}", true);
 				
 				{% if icon_localization is not none %}
 					template.darkIconDefaultSource = "{{ url_for(
@@ -142,6 +142,8 @@
 						filename='images/locations/' + base_localization.capitalize() + '.png'
 					) }}", true);
 				{% endif %}
+				
+				await template.redrawCanvas();
 			}
 		</script>
 	</body>
diff --git a/generator/views/generator.py b/generator/views/generator.py
index 6c53b29c591ad83768cedbaccb70d7e3022fc7e0..d7090eadfb379181e22f3d044e84f831a0c2edda 100644
--- a/generator/views/generator.py
+++ b/generator/views/generator.py
@@ -27,7 +27,9 @@ ICON_HEIGHT_SPECIAL_MULTIPLIERS = {
 	"louny-bila-na-fialove": 2,
 	"louny-zlata-na-fialove": 2,
 	"louny-fialova-na-bile": 2,
-	"louny-fialova-na-zlate": 2
+	"louny-fialova-na-zlate": 2,
+	"olomouc-volim": 4,
+	"olomouc-kandidat": 4
 }
 
 ICON_OFFSET_BOTTOM_SPECIAL_MULTIPLIERS = {
@@ -37,7 +39,9 @@ ICON_OFFSET_BOTTOM_SPECIAL_MULTIPLIERS = {
 	"louny-bila-na-fialove": 0,
 	"louny-zlata-na-fialove": 0,
 	"louny-fialova-na-bile": 0,
-	"louny-fialova-na-zlate": 0
+	"louny-fialova-na-zlate": 0,
+	"olomouc-volim": 0,
+	"olomouc-kandidat": 0
 }
 
 
@@ -128,6 +132,8 @@ def view_avatar_generator_with_localization(
 				"nymburk",
 				"napajedla",
 				"olomouc",
+				"olomouc-kandidat",
+				"olomouc-volim",
 				"opava",
 				"orlova",
 				"ostrava-poruba",