diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md
index 044596073c..4f39e71c3c 100644
--- a/phpBB/docs/events.md
+++ b/phpBB/docs/events.md
@@ -879,6 +879,20 @@ ucp_agreement_terms_before
 * Since: 3.1.0-b3
 * Purpose: Add content before the terms of agreement text at user registration
 
+ucp_pm_viewmessage_avatar_after
+===
+* Locations:
+    + styles/prosilver/template/ucp_pm_viewmessage.html
+* Since: 3.1.0-RC3
+* Purpose: Add content right after the avatar when viewing a private message
+
+ucp_pm_viewmessage_avatar_before
+===
+* Locations:
+    + styles/prosilver/template/ucp_pm_viewmessage.html
+* Since: 3.1.0-RC3
+* Purpose: Add content right before the avatar when viewing a private message
+
 ucp_pm_viewmessage_contact_fields_after
 ===
 * Locations:
@@ -1085,6 +1099,22 @@ viewtopic_print_head_append
 * Since: 3.1.0-a1
 * Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
 
+viewtopic_body_avatar_after
+===
+* Locations:
+    + styles/prosilver/template/viewtopic_body.html
+    + styles/subsilver2/template/viewtopic_body.html
+* Since: 3.1.0-RC3
+* Purpose: Add content right after the avatar when viewing topics
+
+viewtopic_body_avatar_before
+===
+* Locations:
+    + styles/prosilver/template/viewtopic_body.html
+    + styles/subsilver2/template/viewtopic_body.html
+* Since: 3.1.0-RC3
+* Purpose: Add content right before the avatar when viewing topics
+
 viewtopic_body_contact_fields_after
 ===
 * Locations:
diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html
index 489c1c901a..62993e9b4e 100644
--- a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html
+++ b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html
@@ -18,7 +18,14 @@
 <div class="inner">
 
 	<dl class="postprofile" id="profile{MESSAGE_ID}">
-		<dt class="<!-- IF RANK_TITLE or RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF -->"><!-- IF AUTHOR_AVATAR --><a href="{U_MESSAGE_AUTHOR}" class="avatar">{AUTHOR_AVATAR}</a><!-- ENDIF -->{MESSAGE_AUTHOR_FULL}</dt>
+		<dt class="<!-- IF RANK_TITLE or RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF --> <!-- IF AUTHOR_AVATAR -->has-avatar<!-- ELSE -->no-avatar<!-- ENDIF -->">
+			<div class="avatar-container">
+				<!-- EVENT ucp_pm_viewmessage_avatar_before -->
+				<!-- IF AUTHOR_AVATAR --><a href="{U_MESSAGE_AUTHOR}" class="avatar">{AUTHOR_AVATAR}</a><!-- ENDIF -->
+				<!-- EVENT ucp_pm_viewmessage_avatar_after -->
+			</div>
+			{MESSAGE_AUTHOR_FULL}
+		</dt>
 
 		<!-- IF RANK_TITLE or RANK_IMG --><dd class="profile-rank">{RANK_TITLE}<!-- IF RANK_TITLE and RANK_IMG --><br /><!-- ENDIF -->{RANK_IMG}</dd><!-- ENDIF -->
 
diff --git a/phpBB/styles/prosilver/template/viewtopic_body.html b/phpBB/styles/prosilver/template/viewtopic_body.html
index b764979f97..810c30ed15 100644
--- a/phpBB/styles/prosilver/template/viewtopic_body.html
+++ b/phpBB/styles/prosilver/template/viewtopic_body.html
@@ -124,10 +124,14 @@
 		<div class="inner">
 
 		<dl class="postprofile" id="profile{postrow.POST_ID}"<!-- IF postrow.S_POST_HIDDEN --> style="display: none;"<!-- ENDIF -->>
-			<dt class="<!-- IF postrow.RANK_TITLE or postrow.RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF -->">
-				<!-- IF postrow.POSTER_AVATAR -->
-					<!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}" class="avatar">{postrow.POSTER_AVATAR}</a><!-- ELSE --><span class="avatar">{postrow.POSTER_AVATAR}</span><!-- ENDIF -->
-				<!-- ENDIF -->
+			<dt class="<!-- IF postrow.RANK_TITLE or postrow.RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF --> <!-- IF postrow.POSTER_AVATAR -->has-avatar<!-- ELSE -->no-avatar<!-- ENDIF -->">
+				<div class="avatar-container">
+					<!-- EVENT viewtopic_body_avatar_before -->
+					<!-- IF postrow.POSTER_AVATAR -->
+						<!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}" class="avatar">{postrow.POSTER_AVATAR}</a><!-- ELSE --><span class="avatar">{postrow.POSTER_AVATAR}</span><!-- ENDIF -->
+					<!-- ENDIF -->
+					<!-- EVENT viewtopic_body_avatar_after -->
+				</div>
 				<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
 			</dt>
 
diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css
index 2f2a9ed268..f6e490f82a 100644
--- a/phpBB/styles/prosilver/theme/bidi.css
+++ b/phpBB/styles/prosilver/theme/bidi.css
@@ -582,6 +582,10 @@ li.breadcrumbs span:first-child > a {
 	margin-right: 8px;
 }
 
+.rtl .postprofile .avatar {
+	float: right;
+}
+
 .rtl .online {
 	background-position: 0 0;
 }
@@ -1074,8 +1078,11 @@ li.breadcrumbs span:first-child > a {
 		border-width: 0 0 1px 0;
 	}
 
+	.rtl .postprofile dt, .rtl .postprofile dd.profile-rank, .rtl .search .postprofile dd {
+		margin: 0;
+	}
+
 	.rtl .postprofile .avatar {
-		float: right;
 		margin-left: 5px;
 		margin-right: 0;
 	}
diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css
index 54d81406e8..45cb88890d 100644
--- a/phpBB/styles/prosilver/theme/common.css
+++ b/phpBB/styles/prosilver/theme/common.css
@@ -305,12 +305,6 @@ ol ol ul, ol ul ul, ul ol ul, ul ul ul {
 	border-radius: 7px;
 }
 
-.inner:after {
-	content: '';
-	clear: both;
-	display: block;
-}
-
 .rowbg {
 	margin: 5px 5px 2px 5px;
 }
@@ -326,12 +320,6 @@ ul.linklist {
 	margin: 0;
 }
 
-ul.linklist:after {
-	content: '';
-	display: block;
-	clear: both;
-}
-
 #cp-main .panel {
 	padding: 5px 10px;
 }
@@ -856,12 +844,6 @@ fieldset.fields1 dl.pmlist dd.recipients {
 	margin-top: 2em;
 }
 
-.action-bar:after {
-	clear: both;
-	content: '';
-	display: block;
-}
-
 /* Pagination
 ---------------------------------------- */
 .pagination {
@@ -1130,6 +1112,20 @@ form > p.post-notice strong {
 	background: transparent;
 }
 
+/* Inner box-model clearing */
+.inner:after,
+ul.linklist:after,
+.action-bar:after,
+.notification_text:after,
+.tabs-container:after,
+#tabs > ul:after, 
+#minitabs > ul:after,
+.postprofile .avatar-container:after {
+	clear: both;
+	content: '';
+	display: block;
+}
+
 .hidden {
 	display: none;
 }
@@ -1285,12 +1281,6 @@ form > p.post-notice strong {
 	margin-left: 58px;
 }
 
-.notification_text:after {
-	content: '';
-	clear: both;
-	display: block;
-}
-
 /* Navbar specific list items
 ----------------------------------------*/
 
diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css
index a014f57d47..8b84545a2c 100644
--- a/phpBB/styles/prosilver/theme/content.css
+++ b/phpBB/styles/prosilver/theme/content.css
@@ -710,15 +710,22 @@ fieldset.polls dd div {
 	margin-bottom: 10px;
 }
 
+/* Post-profile avatars */
+.postprofile .has-avatar .avatar-container {
+	margin-bottom: 3px;
+	overflow: hidden;
+}
+
 .postprofile .avatar {
 	display: block;
-	border: none;
-	margin-bottom: 3px;
+	float: left;
+	max-width: 100%;
 }
 
 .postprofile .avatar img {
-	max-width: 90%;
+	display: block;
 	height: auto !important;
+	max-width: 100%;
 }
 
 dd.profile-warnings {
diff --git a/phpBB/styles/prosilver/theme/cp.css b/phpBB/styles/prosilver/theme/cp.css
index 5149a16ec9..d3699c3012 100644
--- a/phpBB/styles/prosilver/theme/cp.css
+++ b/phpBB/styles/prosilver/theme/cp.css
@@ -96,12 +96,6 @@ ul.cplist {
 	margin-bottom: 0px;
 }
 
-.tabs-container:after {
-	clear: both;
-	content: '';
-	display: block;
-}
-
 /* CP tabs shared
 ----------------------------------------*/
 #tabs, #minitabs {
@@ -115,12 +109,6 @@ ul.cplist {
 	position: relative;
 }
 
-#tabs > ul:after, #minitabs > ul:after {
-	clear: both;
-	content: '';
-	display: block;
-}
-
 #tabs .tab, #minitabs .tab {
 	display: inline-block;
 	float: left;
diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css
index 241b4d132e..b9cbd4cdfb 100644
--- a/phpBB/styles/prosilver/theme/responsive.css
+++ b/phpBB/styles/prosilver/theme/responsive.css
@@ -424,16 +424,22 @@ fieldset.polls dd.resultbar, fieldset.polls dd.poll_option_percent {
 	margin: 0;
 }
 
+.postprofile .has-avatar .avatar-container {
+	margin: 0;
+	overflow: inherit;
+}
+
+.postprofile .avatar-container:after {
+	clear: none;
+}
+
 .postprofile .avatar {
-	display: block;
-	float: left;
 	margin-right: 5px;
 }
 
 .postprofile .avatar img {
 	width: auto !important;
 	height: auto !important;
-	display: block;
 	max-height: 32px;
 }
 
diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css
index ea0c66d20a..851b3a6bb6 100644
--- a/phpBB/styles/prosilver/theme/tweaks.css
+++ b/phpBB/styles/prosilver/theme/tweaks.css
@@ -71,3 +71,8 @@ dd.option {
 .header-avatar img {
 	height: 20px;
 }
+
+/* IE8 often can't handle max-width in %, so we use px instead */
+.postprofile .avatar img {
+	max-width: 150px; 
+}
diff --git a/phpBB/styles/subsilver2/template/viewtopic_body.html b/phpBB/styles/subsilver2/template/viewtopic_body.html
index c69be83a1e..0f34b50950 100644
--- a/phpBB/styles/subsilver2/template/viewtopic_body.html
+++ b/phpBB/styles/subsilver2/template/viewtopic_body.html
@@ -192,11 +192,15 @@
 					<td>{postrow.RANK_IMG}</td>
 				</tr>
 			<!-- ENDIF -->
+
+			<!-- EVENT viewtopic_body_avatar_before -->
 			<!-- IF postrow.POSTER_AVATAR -->
 				<tr>
 					<td>{postrow.POSTER_AVATAR}</td>
 				</tr>
 			<!-- ENDIF -->
+			<!-- EVENT viewtopic_body_avatar_after -->
+
 			<!-- IF not (postrow.ONLINE_IMG or postrow.RANK_TITLE or postrow.RANK_IMG or postrow.POSTER_AVATAR) -->
 				<tr>
 					<td></td>