diff --git a/Gemfile b/Gemfile
index f7da36be948b0091500dc86967b9f731e3ddb62f..59adf6d2d65dd7163938afc0921562a6da039e9b 100644
--- a/Gemfile
+++ b/Gemfile
@@ -94,7 +94,7 @@ gem "seed-fu"
 
 # Markdown and HTML processing
 gem 'html-pipeline', '~> 1.11.0'
-gem 'task_list',     '~> 1.0.0', require: 'task_list/railtie'
+gem 'task_list',     '1.0.2', require: 'task_list/railtie'
 gem 'github-markup'
 gem 'redcarpet',     '~> 3.2.3'
 gem 'RedCloth'
diff --git a/Gemfile.lock b/Gemfile.lock
index b6cf03b0fd41c332bfa580e7284ee50e5461f71c..9ea77151c74d89f28f97c13fb3c68d641cb76bd3 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -338,7 +338,7 @@ GEM
     method_source (0.8.2)
     mime-types (1.25.1)
     mimemagic (0.3.0)
-    mini_portile (0.6.1)
+    mini_portile (0.6.2)
     minitest (5.3.5)
     mousetrap-rails (1.4.6)
     multi_json (1.10.1)
@@ -350,7 +350,7 @@ GEM
       net-ssh (>= 2.6.5)
     net-ssh (2.8.0)
     newrelic_rpm (3.9.4.245)
-    nokogiri (1.6.5)
+    nokogiri (1.6.6.2)
       mini_portile (~> 0.6.0)
     nprogress-rails (0.1.2.3)
     oauth (0.4.7)
@@ -802,7 +802,7 @@ DEPENDENCIES
   spring-commands-spinach (= 1.0.0)
   stamp
   state_machine
-  task_list (~> 1.0.0)
+  task_list (= 1.0.2)
   test_after_commit
   thin
   tinder (~> 1.9.2)
diff --git a/app/assets/stylesheets/pages/notes.scss b/app/assets/stylesheets/pages/notes.scss
index e943be67dbf3ac45ffc2e53c207d7541a1b5a677..42b8ecabb38754fd2146a9b6a9f379dd94acd545 100644
--- a/app/assets/stylesheets/pages/notes.scss
+++ b/app/assets/stylesheets/pages/notes.scss
@@ -79,11 +79,11 @@ ul.notes {
         word-wrap: break-word;
         @include md-typography;
 
-        // Reduce left padding of first ul element
+        // Reduce left padding of first task list ul element
         ul.task-list:first-child {
           padding-left: 10px;
 
-          // sub-lists should be padded normally
+          // sub-tasks should be padded normally
           ul {
             padding-left: 20px;
           }
diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb
index 133010adcafe27f6eecee6e33488ef27045106c0..c0fb22e7f36df88dd8986780ba15d76ae06a7045 100644
--- a/lib/gitlab/markdown.rb
+++ b/lib/gitlab/markdown.rb
@@ -1,5 +1,4 @@
 require 'html/pipeline'
-require 'task_list/filter'
 
 module Gitlab
   # Custom parser for GitLab-flavored Markdown
@@ -19,6 +18,7 @@ module Gitlab
     autoload :SanitizationFilter,           'gitlab/markdown/sanitization_filter'
     autoload :SnippetReferenceFilter,       'gitlab/markdown/snippet_reference_filter'
     autoload :TableOfContentsFilter,        'gitlab/markdown/table_of_contents_filter'
+    autoload :TaskListFilter,               'gitlab/markdown/task_list_filter'
     autoload :UserReferenceFilter,          'gitlab/markdown/user_reference_filter'
 
     # Public: Parse the provided text with GitLab-Flavored Markdown
@@ -113,7 +113,7 @@ module Gitlab
         Gitlab::Markdown::CommitReferenceFilter,
         Gitlab::Markdown::LabelReferenceFilter,
 
-        TaskList::Filter
+        Gitlab::Markdown::TaskListFilter
       ]
     end
   end
diff --git a/lib/gitlab/markdown/task_list_filter.rb b/lib/gitlab/markdown/task_list_filter.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c6eb2e2bf6ddab6c594a76fae86619efd46361ea
--- /dev/null
+++ b/lib/gitlab/markdown/task_list_filter.rb
@@ -0,0 +1,23 @@
+require 'task_list/filter'
+
+module Gitlab
+  module Markdown
+    # Work around a bug in the default TaskList::Filter that adds a `task-list`
+    # class to every list element, regardless of whether or not it contains a
+    # task list.
+    #
+    # This is a (hopefully) temporary fix, pending a new release of the
+    # task_list gem.
+    #
+    # See https://github.com/github/task_list/pull/60
+    class TaskListFilter < TaskList::Filter
+      def add_css_class(node, *new_class_names)
+        if new_class_names.include?('task-list')
+          super if node.children.any? { |c| c['class'] == 'task-list-item' }
+        else
+          super
+        end
+      end
+    end
+  end
+end
diff --git a/spec/lib/gitlab/markdown/task_list_filter_spec.rb b/spec/lib/gitlab/markdown/task_list_filter_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2a1e1cc5127ddf15de70b9ee2d614d2bd7914060
--- /dev/null
+++ b/spec/lib/gitlab/markdown/task_list_filter_spec.rb
@@ -0,0 +1,14 @@
+require 'spec_helper'
+
+module Gitlab::Markdown
+  describe TaskListFilter do
+    def filter(html, options = {})
+      described_class.call(html, options)
+    end
+
+    it 'does not apply `task-list` class to non-task lists' do
+      exp = act = %(<ul><li>Item</li></ul>)
+      expect(filter(act).to_html).to eq exp
+    end
+  end
+end