Well, finally I was able to do something about this. I was using a fractional value to increase X to get smoother (non-square) falloff for the area, but it's still kind of square-ish (ix and add_x variables). Also, I noticed that using 4.0 for power was way too much (I ended up using 1.2), because there just aren't enough tiles to show the falloff! Instead I was using a condition to start increase X after one run of loop to get the block around the player in full light. But I guess it's the reason the light is more rectangle shaped that I hoped.
double ix=0.0;
const double add_x=(float)1.0f/(loop-1);
for (int t=0; t<loop; t++)
{
r.x=Function::round(x);
r.y=Function::round(y);
int i=Get_Index(r);
if (i==-1) break;
double tx=pow(ix, 1.2);
int iv=(int)(light_value*(1.0-(tx*tx)));
tilemap[i].Set_Light_Value(iv);
if (t>0 && tilemap[i].Determine_Los_Value()!=fovVisible) break;
x+=x_inc;
y+=y_inc;
if (t>0) ix+=add_x;
}