diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index 5fb99a2031fb..c4a4817195b6 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -208,7 +208,9 @@ impl<'a> fmt::Display for WhereClause<'a> {
clause.push_str("");
let plain = format!("{:#}", self);
if plain.len() + pad.len() > 80 {
- let padding = if pad.len() + 25 > 80 {
+ //break it onto its own line regardless, but make sure method impls and trait
+ //blocks keep their fixed padding (2 and 9, respectively)
+ let padding = if pad.len() > 10 {
clause = clause.replace("class='where'", "class='where fmt-newline'");
repeat(" ").take(8).collect::()
} else {