diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index d12c5d2c6fb6b..79585a94cd0f3 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -378,7 +378,7 @@ fn primitive_link(f: &mut fmt::Formatter,
Some(&LOCAL_CRATE) => {
let len = CURRENT_LOCATION_KEY.with(|s| s.borrow().len());
let len = if len == 0 {0} else {len - 1};
- try!(write!(f, "",
+ try!(write!(f, "",
repeat("../").take(len).collect::(),
prim.to_url_str()));
needs_termination = true;
@@ -398,7 +398,7 @@ fn primitive_link(f: &mut fmt::Formatter,
};
match loc {
Some(root) => {
- try!(write!(f, "",
+ try!(write!(f, "",
root,
path.0.first().unwrap(),
prim.to_url_str()));
diff --git a/src/librustdoc/html/static/main.css b/src/librustdoc/html/static/main.css
index 5e27eab8575ee..a90bf17601fee 100644
--- a/src/librustdoc/html/static/main.css
+++ b/src/librustdoc/html/static/main.css
@@ -415,9 +415,12 @@ a {
.content span.mod, .content a.mod, block a.current.mod { color: #4d76ae; }
.content span.enum, .content a.enum, .block a.current.enum { color: #5e9766; }
.content span.struct, .content a.struct, .block a.current.struct { color: #e53700; }
-.content span.fn, .content a.fn, .block a.current.fn { color: #8c6067; }
-.content span.method, .content a.method, .block a.current.method { color: #8c6067; }
-.content span.tymethod, .content a.tymethod, .block a.current.tymethod { color: #8c6067; }
+.content a.primitive { color: #39a7bf; }
+.content a.type { color: #e57300; }
+.content a.macro { color: #068000; }
+.content span.fn, .content a.fn, .block a.current.fn,
+.content span.method, .content a.method, .block a.current.method,
+.content span.tymethod, .content a.tymethod, .block a.current.tymethod,
.content .fnname { color: #8c6067; }
.block a.current.crate { font-weight: 500; }