Solution of Cahn-Hilliard equation using Fully-Discrete scheme by Backward Euler Method

My codes:

mesh Th=square(100,100);
macro Grad(u)[dx(u),dy(u)]//
macro uex(t)(exp(-2*t)*(sin(pi*x)^2)*(sin(pi*y)^2)) //

fespace Vh(Th,P1);
fespace Vh2(Th,[P1,P1]);

real a=0.01;
real dt=0.10;
int i,k;

// Function
func real df(real u){return u^3-u; }
func real ddf(real u){return 3*u^2-1; }

Vh2 [u,w],[v,z],[oldv,oldz],[auxv,auxz],[vv,zz];
Vh dfalpha;
Vh ddfalpha;

// Problem
varf vdJ([v,z],[phi,psi])=int2d(Th)

varf vhJ([v,z],[phi,psi])=int2d(Th)


plot(u,wait=1,cmm="Cahn-Hilliard" ,value=true);
real t;
   for (int i=0;i<1./dt; i++) // Time loop
   for (int k=0;k<10;k++)// Newton loop
    dfalpha=df( oldv );
    ddfalpha=ddf( oldv );
    real res= auxv[]'*auxv[]; // Residual 
    cout << i << " residu^2 = " << res << endl;
    matrix H;
    if (res< 1e-12) break;
    H=vhJ(Vh2,Vh2, factorize=1,solver=LU);
    vv[]=H^-1*auxv[]; // Newton
    v[] -=vv[];
     plot(u,wait=1,cmm="Cahn-Hilliard", value=true);
     cout << "t" << t << "L^2-error=" << sqrt(int2d(Th)((u-uex(t))^2))<<endl;

 **Results(or out put):**(Figures)
![Exact solution|690x420](upload://iKeFjM432CYEb1G5Y6enXqUaM3s.png)
![Approximate solution|690x420](upload://9cDxaTdMhEE87LQuSR9hN74tVjW.png)

  Approximate solution and exact solution are not matching not on the boundary. Can help me what can i do on my codes so that the exact solution matches almost to the approximate solution on the boundary. One more thing, i want to find L^2 error and convergence rate in space and time (as i am doing Fully discrete Scheme). How i can do that . Please help  me .It is very urgent.