diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6f0c931..f1be1f8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+#### 0.10.5+1
+  * Fix @HtmlImport with relative paths from within folders in deployment mode.
+
 #### 0.10.5
   * Update `ImportCrawler` with support for pre-parsed initial documents. This
     allows it to work better with other transformers in the same step (you can
diff --git a/lib/build/html_import_annotation_recorder.dart b/lib/build/html_import_annotation_recorder.dart
index 336ee7c..e517e33 100644
--- a/lib/build/html_import_annotation_recorder.dart
+++ b/lib/build/html_import_annotation_recorder.dart
@@ -79,7 +79,7 @@
           path.url.joinAll(segments.getRange(1, segments.length)),
           from: path.url.dirname(path.url.join(bootstrapId.path)));
     } else if (segments[1] == 'lib') {
-      libPath = path.url.joinAll(segments.getRange(1, segments.length));
+      libPath = path.url.joinAll(segments.getRange(2, segments.length));
     } else {
       logger.error('Unable to import `${element.source.uri.path}` from '
           '${bootstrapId}.');
diff --git a/lib/src/normalize_path.dart b/lib/src/normalize_path.dart
index bac6b8b..129dfe6 100644
--- a/lib/src/normalize_path.dart
+++ b/lib/src/normalize_path.dart
@@ -13,16 +13,13 @@
   }
 
   var dartFileDir = path.url.dirname(dartFilePath);
-  var segments = path.url.split(dartFileDir);
-  // The dartFileDir without the leading dir (web, lib, test, etc).
-  var dartFileSubDir = path.url.joinAll(segments.getRange(1, segments.length));
 
   // Relative paths have no package supplied.
   if (dartFilePackage == null) {
-    return path.url.normalize(path.url.join(dartFileSubDir, filePath));
+    return path.url.normalize(path.url.join(dartFileDir, filePath));
   }
 
   // Only option left is a packages/ path.
   return path.url.normalize(
-      path.url.join('packages/', dartFilePackage, dartFileSubDir, filePath));
+      path.url.join('packages/', dartFilePackage, dartFileDir, filePath));
 }
diff --git a/pubspec.yaml b/pubspec.yaml
index d11d54e..ebc2995 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: web_components
-version: 0.10.5
+version: 0.10.5+1
 author: Polymer.dart Authors <web-ui-dev@dartlang.org>
 homepage: https://www.dartlang.org/polymer-dart/
 description: >
diff --git a/test/foo/bar.dart b/test/foo/bar.dart
new file mode 100644
index 0000000..6784550
--- /dev/null
+++ b/test/foo/bar.dart
@@ -0,0 +1,7 @@
+// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+@HtmlImport('bar.html')
+library web_components.test.foo.bar;
+
+import 'package:web_components/web_components.dart';
diff --git a/test/foo/bar.html b/test/foo/bar.html
new file mode 100644
index 0000000..5716ca5
--- /dev/null
+++ b/test/foo/bar.html
@@ -0,0 +1 @@
+bar
diff --git a/test/html_import_annotation_test.dart b/test/html_import_annotation_test.dart
index cae624a..09a3ffd 100644
--- a/test/html_import_annotation_test.dart
+++ b/test/html_import_annotation_test.dart
@@ -11,6 +11,7 @@
 import 'package:unittest/html_config.dart';
 import 'package:unittest/unittest.dart';
 import 'package:web_components/html_import_annotation.dart';
+import 'foo/bar.dart';
 
 const String importPath = 'my_import.html';
 
@@ -19,8 +20,14 @@
 
   test('adds import to head', () {
     return init.run().then((_) {
-      var good = document.head.querySelector('link[href="$importPath"]');
-      expect(good.import.body.text, 'Hello world!\n');
+      var my_import = document.head.querySelector('link[href="$importPath"]');
+      expect(my_import, isNotNull);
+      expect(my_import.import.body.text, 'Hello world!\n');
+
+      var bar = document.head.querySelector('link[href="foo/bar.html"]');
+      expect(bar, isNotNull);
+      expect(bar.import.body.text, 'bar\n');
+
       var bad = document.head.querySelector('link[href="bad_import.html"]');
       expect(bad.import, isNull);
     });
