Index: CKEditor/trunk/CHANGES.html
===================================================================
--- CKEditor/trunk/CHANGES.html	(revision 3808)
+++ CKEditor/trunk/CHANGES.html	(revision 3810)
@@ -94,4 +94,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/3874">#3874</a> : Paste as plain text in Safari loosing lines.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3849">#3849</a> : Fixed IE8 crashes when applying lists and indenting.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3876">#3876</a> : Changed dialog checkbox and radio labels to explicit labels.</li>
 	</ul>
 	<h3>
Index: CKEditor/trunk/_source/plugins/dialogui/plugin.js
===================================================================
--- CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3808)
+++ CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3810)
@@ -338,9 +338,11 @@
 						attributes.checked = 'checked';
 					_.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes );
-					html.push( ' ', CKEDITOR.tools.htmlEncode( elementDefinition.label ) );
+					html.push( ' <label for="', attributes.id, '">',
+							CKEDITOR.tools.htmlEncode( elementDefinition.label ),
+							'</label>' );
 					return html.join( '' );
 				};
 
-				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'label', null, null, innerHTML );
+				CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'span', null, null, innerHTML );
 			},
 
@@ -399,5 +401,4 @@
 										title : title
 									}, true ),
-							inputHtml = [],
 							inputAttributes =
 							{
@@ -406,5 +407,6 @@
 								name : commonName,
 								value : value
-							};
+							},
+							inputHtml = [];
 						if ( me._['default'] == value )
 							inputAttributes.checked = 'checked';
@@ -412,6 +414,8 @@
 						cleanInnerDefinition( labelDefinition );
 						children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) );
-						new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtmlList, 'label', null, null,
-							   inputHtml.join( '' ) + ' ' + item[0] );
+						inputHtml.push( ' ' );
+						new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { 'for' : inputAttributes.id },
+							   item[0] );
+						inputHtmlList.push( inputHtml.join( '' ) );
 					}
 					new CKEDITOR.ui.dialog.hbox( dialog, [], inputHtmlList, html );
