diff --git a/.gitattributes b/.gitattributes
index 1a9e0e3bff475bb532f9632eb5d58654af0cd2ee..0b5870a98f9ab8cfea37551740d77f6101aa1a28 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -251,6 +251,7 @@ dist/spip.png -text
 dist/style_prive.html -text
 dist/style_prive_defaut.css -text
 dist/style_prive_ie.html -text
+dist/style_svg.html -text
 dist/vignettes/abw.png -text
 dist/vignettes/ai.png -text
 dist/vignettes/aiff.png -text
diff --git a/dist/style_svg.html b/dist/style_svg.html
new file mode 100644
index 0000000000000000000000000000000000000000..39b9358157f349b36d12ce1c4b848cef0c2090ab
--- /dev/null
+++ b/dist/style_svg.html
@@ -0,0 +1,26 @@
+#CACHE{3600*100,cache-client}
+#HTTP_HEADER{Content-Type: text/css; charset=iso-8859-15}
+#HTTP_HEADER{Vary: Accept-Encoding}
+
+[(#REM)
+
+	Ce squelette definit les styles pour le code SVG dans SPIP
+]
+
+.svg-rect-foncee {
+	fill: ##ENV{couleur_foncee,3874b0};
+}
+
+.svg-stop0 {
+	stop-color: ##ENV{couleur_claire,edf3fe};
+	stop-opacity:0.3;
+}
+
+.svg-stop100 {
+	stop-color: ##ENV{couleur_foncee,3874b0};
+	stop-opacity:1;
+}
+
+.gris {fill: #aaaaaa; fill-opacity: 0.2;}
+
+.trait {stroke:black;stroke-width:1;}
diff --git a/ecrire/exec/admin_plugin.php b/ecrire/exec/admin_plugin.php
index 1a740133f2c070b7d503c6141d43880c345e7ce3..fad63cf63475fa824fa64a11fcbdb971c8f742a3 100644
--- a/ecrire/exec/admin_plugin.php
+++ b/ecrire/exec/admin_plugin.php
@@ -38,10 +38,8 @@ function exec_admin_plugin() {
 	if (isset($_GET['surligne']))
 		$surligne = $_GET['surligne'];
 
-	global $couleur_claire;
 	$commencer_page = charger_fonction('commencer_page', 'inc');
 	echo $commencer_page(_T('icone_admin_plugin'), "configuration", "plugin");
-	$dir_img_pack = _DIR_IMG_PACK;
 	echo "<style type='text/css'>\n";
 	echo <<<EOF
 div.cadre-padding ul li {
@@ -69,7 +67,7 @@ div.cadre-padding ul li li div.nomplugin a {
 	-moz-outline:0 !important;
 }
 div.cadre-padding ul li li div.nomplugin_on {
-	background:$couleur_claire;
+	background: #edf3fe /* couleur claire a remettre avec une CSS */
 }
 div.cadre-padding ul li li div.nomplugin_on>a {
 	font-weight:bold;
@@ -276,7 +274,7 @@ function ligne_plug($plug_file, $actif, $id){
 	$info = plugin_get_infos($plug_file);
 	$s = "<div class='nomplugin ".($actif?'nomplugin_on':'')."'>";
 	if (isset($info['erreur'])){
-		$s .=  "<div style='background:".$GLOBALS['couleur_claire']."'>";
+		$s .=  "<div class='toile_claire'>";
 		$erreur = true;
 		foreach($info['erreur'] as $err)
 			$s .= "/!\ $err <br/>";
diff --git a/ecrire/exec/statistiques_svg.php b/ecrire/exec/statistiques_svg.php
index 0dd15e670dcbc5b23597bb9f450e9e64f36a3b99..0b9ac6da8e3f9a89715c1d2f826b499cb493d0a3 100644
--- a/ecrire/exec/statistiques_svg.php
+++ b/ecrire/exec/statistiques_svg.php
@@ -50,12 +50,9 @@ if ($connect_statut != '0minirezo') {
 	header("Content-type: image/svg+xml");
 
 	echo "<"."?xml version=\"1.0\" standalone=\"no\"?>\n";
+	echo '<', '?xml-stylesheet type="text/css" href="', generer_url_public('style_svg', _SENS_ET_COULEURS, true), '" ?', ">\n";
 	echo "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
 	echo "<svg  xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"450\" height=\"310\" x=\"0\" y=\"0\">\n";
-	echo "<style type='text/css'>\n";
-	echo ".gris {fill: #aaaaaa; fill-opacity: 0.2;}\n";
-	echo ".trait {stroke:black;stroke-width:1;}\n";
-	echo "</style>\n";
 	echo '<defs>';
 	echo '<linearGradient id="orange_red" x1="0%" y1="0%" x2="0%" y2="150%">';
 	echo '<stop offset="0%" style="stop-color:rgb(255,255,0); stop-opacity:1" />';
@@ -64,8 +61,8 @@ if ($connect_statut != '0minirezo') {
 	echo '</defs>';
 	echo "<defs>\n";
 	echo '<linearGradient id="claire" x1="0%" y1="0%" x2="0%" y2="100%">';
-	echo '<stop offset="0%" style="stop-color:'.$couleur_claire.'; stop-opacity:0.3"/>';
-	echo '<stop offset="100%" style="stop-color:'.$couleur_foncee.'; stop-opacity:1"/>';
+	echo '<stop offset="0%" class="svg-stop0" />';
+	echo '<stop offset="100%" class="svg-stop100" />';
 	echo "</linearGradient>\n";
 	echo "</defs>\n";
 
@@ -227,14 +224,14 @@ if ($connect_statut != '0minirezo') {
 
 
 			if (date("w",$key) == "0") // Dimanche en couleur foncee
-				$fill = $couleur_foncee;
+				$fill = "class='svg-rect-foncee'";
 			else 
-				$fill = "url(#claire)";
+				$fill = "style='fill: url(#claire)'";
 
 
 
-			echo "<rect x='".(($n-1)*$largeur)."' y='".(300-$hauteur)."' width='$largeur' height='$hauteur' style='fill:$fill'/>\n";	
-			echo "<rect x='".(($n-1)*$largeur)."' y='".(300-$hauteur)."' width='$largeur' height='1' style='fill:$couleur_foncee;'/>\n";	
+			echo "<rect x='".(($n-1)*$largeur)."' y='".(300-$hauteur)."' width='$largeur' height='$hauteur' $fill />\n";	
+			echo "<rect x='".(($n-1)*$largeur)."' y='".(300-$hauteur)."' width='$largeur' height='1' $fill />\n";	
 
 			if (date("d", $key) == "1") 
 				echo "<line x1='".(($n-1)*$largeur)."' y1='".(300-$hauteur_moyenne)."' x2='".(($n-1)*$largeur)."' y2='300' class='trait'/>\n";	
diff --git a/ecrire/exec/statistiques_visites.php b/ecrire/exec/statistiques_visites.php
index 1c01d18fe1f5efd68d9ea7d96148f3dc5915a59e..c95e1954215bac4697f958b04d00c62b3c621b47 100644
--- a/ecrire/exec/statistiques_visites.php
+++ b/ecrire/exec/statistiques_visites.php
@@ -365,12 +365,12 @@ if ($connect_statut != '0minirezo') {
 		if ($date_premier < $date_debut)
 		  echo http_href_img(generer_url_ecrire("statistiques_visites","aff_jours=$aff_jours_plus$pour_article"),
 				     'loupe-moins.gif',
-				     "style='border: 0px; vertical-align:center;'",
+				     "style='border: 0px; vertical-align: middle;'",
 				     _T('info_zoom'). '-'), "&nbsp;";
 		if ( (($date_today - $date_debut) / (24*3600)) > 30)
 		  echo http_href_img(generer_url_ecrire("statistiques_visites","aff_jours=$aff_jours_moins$pour_article"), 
 				     'loupe-plus.gif',
-				     "style='border: 0px; vertical-align:center;'",
+				     "style='border: 0px; vertical-align: middle;'",
 				     _T('info_zoom'). '+'), "&nbsp;";
 	
 	
@@ -591,8 +591,6 @@ if ($GLOBALS['accepte_svg']) {
 			echo "<tr><td height='10' valign='bottom'>";		
 			echo "<span class='arial1 spip_x-small'><b>0</b></span>";
 			echo "</td>";
-			
-			
 			echo "</tr></table>";
 			echo "</div></td>";
 			echo "</tr></table>";
@@ -607,7 +605,7 @@ if ($GLOBALS['accepte_svg']) {
 					if (date("m", $jour) == 1) $afficher = "<b>".annee(date("Y-m-d", $jour))."</b>";
 					
 				
-					$gauche = ($jour - $date_debut) * $largeur / ((24*3600)*$agreg);
+					$gauche = floor($jour - $date_debut) * $largeur / ((24*3600)*$agreg);
 					
 					if ($gauche - $gauche_prec >= 40 OR date("m", $jour) == 1) {									
 						echo "<div class='arial0' style='border-$spip_lang_left: 1px solid black; padding-$spip_lang_left: 2px; padding-top: 3px; position: absolute; $spip_lang_left: ".$gauche."px; top: -1px;'>".$afficher."</div>";
diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php
index ea9b30195a181e17dbe6e1c54382677057458047..eef7ea77afc2f5f2ce2ca334bc3e11e12682773b 100644
--- a/ecrire/inc/auth.php
+++ b/ecrire/inc/auth.php
@@ -187,6 +187,7 @@ function inc_auth_dist() {
 	// Les plus utiles sont aussi dans les variables simples ci-dessus
 
 	$GLOBALS['auteur_session'] = $row;
+	$GLOBALS['auteur_session']['prefs'] = @unserialize($GLOBALS['auteur_session']['prefs']);
 
 	if (is_string($droits)) {
 	  // ordres mineurs: redac, visiteur ou indefini
diff --git a/ecrire/inc/premiers_pas.php b/ecrire/inc/premiers_pas.php
index e5c116e81d790f37fd399963fd51dbca1fc6a40a..8085ead4f16b928b93b657fdcbaaa16fda34d191 100644
--- a/ecrire/inc/premiers_pas.php
+++ b/ecrire/inc/premiers_pas.php
@@ -70,19 +70,19 @@ ul.etapes li.etape{
 	height:2em;
 	padding-top:0.7em;
 	text-align:center;
-	border:2px solid $couleur_foncee;
+	border:2px solid #3874b0; /* couleur foncee a remettre */
 	margin:0 0.5em 0 0;
 }
 ul.etapes li.etape.on{
-	background-color:$couleur_claire;
+	background-color:#edf3fe; /*  couleur claire a remettre */
 }
 ul.etapes li.etape.off{
 	color:#aaa;
 	border:2px solid #888;
 }
 ul.etapes li.etape.encours{
-	background-color:$couleur_foncee;
-	border:2px solid $couleur_claire;
+	background-color:#3874b0; /* couleur foncee a remettre */
+	border:2px solid #edf3fe; /*  couleur claire a remettre  */
 	color:#fff;
 }
 EOF;
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index fef78739d8e0277101630a4f949063d7bc3daca8..381f6de86c363067cfb189db1c7c58c2f3d6e487 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -1261,15 +1261,7 @@ function afficher_forum_4($compteur_forum, $nb_forum, $thread)
 
 // http://doc.spip.org/@envoi_link
 function envoi_link($nom_site_spip) {
-	global $connect_toutes_rubriques, $spip_display;
-	global $spip_lang, $couleur_claire, $couleur_foncee;
-
-	$args = "couleur_claire=" .
-		substr($couleur_claire,1) .
-		'&couleur_foncee=' .
-		substr($couleur_foncee,1) .
-		'&ltr=' . 
-		$GLOBALS['spip_lang_left'];
+	global $connect_toutes_rubriques, $spip_display, $spip_lang;
 
 	// CSS de secours en cas de non fonct de la suivante
 	$res = '<link rel="stylesheet" type="text/css" href="'
@@ -1278,10 +1270,10 @@ function envoi_link($nom_site_spip) {
 	
 	// CSS espace prive : la vraie
 	. '<link rel="stylesheet" type="text/css" href="'
-	. generer_url_public('style_prive', $args) .'" />' . "\n"
+	. generer_url_public('style_prive', _SENS_ET_COULEURS) .'" />' . "\n"
   . "<!-- [if IE lt 8] -->\n"
   . '<link rel="stylesheet" type="text/css" href="'
-  . generer_url_public('style_prive_ie', $args) .'" />' . "\n"
+  . generer_url_public('style_prive_ie', _SENS_ET_COULEURS) .'" />' . "\n"
   . "<!-- [endif] -->"
   
 	// CSS calendrier
diff --git a/ecrire/inc/selectionner_auteur.php b/ecrire/inc/selectionner_auteur.php
index 2a00243c2f041da938b024c17a2212169d8292dd..516577d5bc11bf45701bbe22d6f6ca15873d1f3d 100644
--- a/ecrire/inc/selectionner_auteur.php
+++ b/ecrire/inc/selectionner_auteur.php
@@ -35,8 +35,6 @@ function inc_selectionner_auteur_dist($id_article)
 // http://doc.spip.org/@selectionner_auteur_boucle
 function selectionner_auteur_boucle($query, $idom)
 {
-	global  $spip_lang_left;
-
 	$info = generer_url_ecrire('informer_auteur', "id=");
 	$args = "'$idom" . "_selection', '$info', event";
 	$res = '';
diff --git a/ecrire/index.php b/ecrire/index.php
index 47d7eefaab3dd14316382515ec65b7a92af3117d..72721f3b1d77557ea3aea57f9d2d267b384e5da2 100644
--- a/ecrire/index.php
+++ b/ecrire/index.php
@@ -105,21 +105,27 @@ if (autoriser_sans_cookie($exec)) {
 
 
 if (!isset($GLOBALS['auteur_session']['prefs']))
-	$GLOBALS['prefs'] = array('couleur' =>1, 'display'=>0);
-else $GLOBALS['prefs'] = unserialize($GLOBALS['auteur_session']['prefs']);
+	$prefs = array('couleur' =>1, 'display'=>0);
+else $prefs = ($GLOBALS['auteur_session']['prefs']);
 
 $prefs_mod = false;
 
 if (isset($_GET['set_couleur'])) {
-	$GLOBALS['prefs']['couleur'] = floor($_GET['set_couleur']);
+	$prefs['couleur'] = floor($_GET['set_couleur']);
 	$prefs_mod = true;
 }
 if (isset($_GET['set_disp'])) {
-	$GLOBALS['prefs']['display'] = floor($_GET['set_disp']);
+	$prefs['display'] = floor($_GET['set_disp']);
 	$prefs_mod = true;
 }
+// compatibilite ascendante
+$GLOBALS['spip_display'] = $prefs['display'];
+
+// Options "avancees" pour tout le monde (en attendant de les supprimer dans le code)
+$GLOBALS['options'] = 'avancees';
+
 if ($prefs_mod AND !$var_auth)
-	spip_query("UPDATE spip_auteurs SET prefs = " . _q(serialize($GLOBALS['prefs'])) . " WHERE id_auteur = " .intval($GLOBALS['auteur_session']['id_auteur']));
+	spip_query("UPDATE spip_auteurs SET prefs = " . _q(serialize($prefs)) . " WHERE id_auteur = " .intval($GLOBALS['auteur_session']['id_auteur']));
 
 if (isset($_GET['set_ecran'])) {
 	// Poser un cookie,
@@ -128,18 +134,11 @@ if (isset($_GET['set_ecran'])) {
 	spip_setcookie('spip_ecran', $GLOBALS['spip_ecran'], time() + 365 * 24 * 3600);
  } else $GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? $_COOKIE['spip_ecran'] : "etroit";
 
+if (!isset($GLOBALS['couleurs_spip'][$prefs['couleur']]))
+    $prefs['couleur'] = 1;
 
-// compatibilite ascendante
-$GLOBALS['spip_display'] = $GLOBALS['prefs']['display'];
-$choix_couleur = $GLOBALS['prefs']['couleur'];
-if (!isset($GLOBALS['couleurs_spip'][$choix_couleur])) $choix_couleur = 1;
-
-$GLOBALS['couleur_foncee'] = $GLOBALS['couleurs_spip'][$choix_couleur]['couleur_foncee'];
-$GLOBALS['couleur_claire'] = $GLOBALS['couleurs_spip'][$choix_couleur]['couleur_claire'];
-
-// Options "avancees" pour tout le monde (en attendant de les supprimer dans le code)
-$GLOBALS['options'] = 'avancees';
-
+$GLOBALS['auteur_session']['prefs'] = $prefs;
+$prefs = $GLOBALS['couleurs_spip'][$prefs['couleur']];
 
 // charger l'affichage minimal et initialiser a la langue par defaut
 include_spip('inc/minipres');
@@ -164,6 +163,14 @@ if (isset($_COOKIE['spip_lang_ecrire'])) {
 
 utiliser_langue_visiteur(); 
 
+// parametres pour les feuilles de style calculees (cf commencer_page et svg)
+define('_SENS_ET_COULEURS', "couleur_claire=" .
+	substr($prefs['couleur_claire'],1).
+       '&couleur_foncee=' .
+	substr($prefs['couleur_foncee'],1) .
+       '&ltr=' . 
+       $GLOBALS['spip_lang_left']);
+
 define('_TRANCHES', 10);
 
 //