diff --git a/ext/gl/gstglcolorbalance.c b/ext/gl/gstglcolorbalance.c
index f543a4c07c..3af45696c0 100644
--- a/ext/gl/gstglcolorbalance.c
+++ b/ext/gl/gstglcolorbalance.c
@@ -282,7 +282,7 @@ _create_shader (GstGLColorBalance * balance)
   guint frag_i = 0;
 
   if (balance->shader)
-    gst_object_unref (balance->shader);
+    gst_clear_object (&balance->shader);
 
   if (filter->in_texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
     frags[frag_i++] = glsl_external_image_extension;
@@ -292,16 +292,20 @@ _create_shader (GstGLColorBalance * balance)
       GST_GLSL_VERSION_NONE,
       GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY);
 
-  /* Can support rectangle textures in the future if needed */
-  if (filter->in_texture_target == GST_GL_TEXTURE_TARGET_2D) {
-    frags[frag_i++] = glsl_2D_image_sampler;
-    frags[frag_i++] = frag_body =
-        g_strdup_printf (color_balance_frag_templ, "texture2D");
-  } else {
-    frags[frag_i++] = glsl_external_image_sampler;
-    frags[frag_i++] = frag_body =
-        g_strdup_printf (color_balance_frag_templ, "texture2D");
+  switch (filter->in_texture_target) {
+    case GST_GL_TEXTURE_TARGET_2D:
+      frags[frag_i++] = glsl_2D_image_sampler;
+      break;
+    case GST_GL_TEXTURE_TARGET_EXTERNAL_OES:
+      frags[frag_i++] = glsl_external_image_sampler;
+      break;
+    default:
+      GST_ERROR_OBJECT (balance, "Unsupported GstGLTextureTarget value: %d",
+          filter->in_texture_target);
+      return FALSE;
   }
+  frags[frag_i++] = frag_body =
+      g_strdup_printf (color_balance_frag_templ, "texture2D");
 
   g_assert (frag_i <= G_N_ELEMENTS (frags));